精华内容
下载资源
问答
  • RSA加密解密算法

    2013-07-06 14:38:31
    可以运行的C++版RSA加密解密算法,有注释详细
  • RSA 加密 解密 算法

    2011-08-15 20:43:36
    RSA加密解密算法,相当不错的例子,适合初学者参考
  • rsa加密解密算法C语言代码#include#include#include #include #include #include #define MAX 100#define LEN sizeof(struct slink)void sub(int a[MAX],int b[MAX] ,int c[MAX] );struct slink{ int bignum[MAX];/*...
    展开全文
  • RSA加密解密算法.ppt

    2020-09-02 08:02:48
    RSA 加密解密算法 1.RSA 算法的基本概念 2.RSA 加密算法实现 3.RSA 解密算法实现 4. 遇到的问题 5. 总结 RSA 加密解密算法基本概念 RSA 公钥加密算法是 1977 年由 Ron Rivest Adi Shamirh 和 LenA dleman 开发的 RSA...
  • 主要介绍了php的RSA加密解密算法原理与用法,结合实例形式分析了rsa加密解密算法的相关概念、原理及PHP使用RSA加密解密算法的具体实现技巧,需要的朋友可以参考下
  • 主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了java RAS加密解密算法的相关实现技巧,需要的朋友可以参考下
  • rsa加密解密算法;Base64Utils.java;RSAUtils.java;3.测试类
  • C++实现密码学 RSA加密解密算法

    热门讨论 2011-05-26 20:51:25
    RSA加密解密算法 C++ 密码学 RSA加密解密算法 C++ 密码学 RSA加密解密算法 C++ 密码学
  • RSA加密解密题目 JAVA实现代码 import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; import java.util.Scanner;... * @Description RSA加密解密算法 * */ public c...

    RSA加密解密题目

    JAVA实现代码

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map.Entry;
    import java.util.Scanner;
    import java.util.Set;
    
    /**
     * @Description RSA加密解密算法
     *
     */
    
    public class Cryptology {
    	private final int p = 47;
    	private final int q = 61;
    	private final int e = 1223;//公钥
    	
    	//快速取模指数算法
    	public int mod(int a,int m,int n){ 
    		int c=0 , res=1;
    		String s=Integer.toBinaryString(m);
    		char[] b= s.toCharArray();
    		for(int j = 0;j<s.length();j++){
    			c=2*c;
    			res=(res*res)%n;
    			if(b[j]=='1'){
    				c++;
    				res=(res*a)%n;
    			}		
    		}
    		
    		return res;		
    	}
    	
    	
    	public int euclideanAlgo(int a,int n){//拓展的欧几里德算法,用来求私钥
    		int X1=1,X2=0,X3=n;
    		int Y1=0,Y2=1,Y3=a;
    		int Q;
    		while(true){
    			if(Y3==0){
    				System.out.println("无逆元");
    				break;
    			}
    			if(Y3==1){
    				return Y2;
    			}
    			Q=X3/Y3;
    			int T1=X1-Q*Y1;
    			int T2=X2-Q*Y2;
    			int T3=X3-Q*Y3;
    			X1=Y1;
    			X2=Y2;
    			X3=Y3;
    			Y1=T1;
    			Y2=T2;
    			Y3=T3;		
    		}			
    		return 0;
    	}
    	
    	//将明文转换成对应的十进制数放进哈希表中
    	public HashMap<Character, Integer> change(){
    		HashMap<Character, Integer> hashMap = new HashMap<>();
    		for(int i = 0;i<26;i++){
    			hashMap.put((char)('a'+i), 1+i);
    		}
    		hashMap.put(' ', 0);
    		return hashMap;
    	}
    	
    	//将明文转换成十进制数
    	public String getRSAClearText(String in){
    		HashMap<Character, Integer> hashMap = change();//获取哈希表
    		char[] clearText = in.toLowerCase().toCharArray();
    		StringBuilder result = new StringBuilder();//接收转换结果
    		for(int i=0;i<clearText.length;i++){
    			int value = hashMap.get(clearText[i]);
    			if(value>=0&&value<=9){//如果value是个位数在前面补0,
    				result.append("0").append(value);
    			}else{
    				result.append(value);
    			}			
    		}
    		if(result.length()%4!=0){//保证每组有4个字符
    			result.append("00");
    		}		
    		return result.toString();		
    	}
    	
    	/**
    	 * RSA加密算法
    	 */
    	public void rsaEncryption(){
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入明文:");
    		String input = getRSAClearText(sc.nextLine());//从控制台输入明文,并且将明文转换成十进制数
    		input = input.replaceAll("(.{4})", "$1 ");//每四个字符添加一个空格
    		System.out.println("明文的十进制数表示:"+input);
    //		String[] inputGroup = new String[input.length()/4];//将明文两个字符作为一组进行分组
    //		for(int i=0;i<input.length();i=i+4){ //
    //			inputGroup[i/4] = input.substring(i, i+4);
    //		}
    		String[] inputGroup = input.split(" ");//将明文两个字符作为一组进行分组
    		StringBuilder encryReasult = new StringBuilder();//存放加密结果
    		int n =p*q;
    		for(int i=0;i<inputGroup.length;i++){
    			int M = Integer.parseInt(inputGroup[i]);
    			int C = mod(M, e, n);
    			int len = String.valueOf(C).length();
    			while(len<4){
    				encryReasult.append("0");
    				len++;
    			}
    			encryReasult.append(C);			
    		}
    		String dencryReasult = encryReasult.toString().replaceAll("(.{4})", "$1 ");
    		System.out.println("密文:"+dencryReasult);
    		System.out.println("-----------------------------------------------------------");
    	}
    	
    	/**
    	 * RSA解密算法
    	 */
    	public void rsaDecryption(){
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入密文:(不要加空格)");
    		String input = sc.nextLine();
    		input = input.replaceAll("(.{4})", "$1 ");
    		System.out.println("输入的密文为:"+input);
    		int  n =p*q , s = (p-1)*(q-1);
    		int d = euclideanAlgo(e, s); //求私钥
    		System.out.println("私钥:"+d);
    		String[] inputGroup = input.split(" ");
    		StringBuilder dencryReasult = new StringBuilder();//存放解密结果
    		for(int i=0;i<inputGroup.length;i++){
    			int C = Integer.parseInt(inputGroup[i]);
    			int M = mod(C,d,n);
    			int len = String.valueOf(M).length();
    			while(len<4){
    				dencryReasult.append("0");
    				len++;
    			}
    			dencryReasult.append(M);	
    		}
    		String encryReasult = dencryReasult.toString().replaceAll("(.{4})", "$1 ");
    		System.out.println("明文的十进制数表示:"+encryReasult);
    		//将明文还原成字符
    		HashMap<Character, Integer> hashMap = change();
    		String[] encryReasultGroup = encryReasult.split(" ");// 将明文结果进行分块
    		StringBuilder result = new StringBuilder();
    		for(String group : encryReasultGroup){
    			String[] str = group.replaceAll("(.{2})", "$1 ").split(" ");
    			for(int i=0;i<str.length;i++){
    				int value = Integer.parseInt(str[i]);
    				Set<Entry<Character, Integer>> set =hashMap.entrySet();
    				Iterator<Entry<Character, Integer>> iterator = set.iterator();
    				while(iterator.hasNext()){
    					Entry<Character,Integer> entry = iterator.next();
    					if(entry.getValue()==value){
    						char key = entry.getKey();
    						result.append(key);
    						break;
    					}
    				}
    			}
    		}
    		System.out.println("明文:"+result.toString().toUpperCase());
    		System.out.println("-----------------------------------------------------------");
    		sc.close();
    	}
    	
    }
    

    测试类

    public class TestMain {
    	//测试类
    	public static void main(String[] args) {
    		Cryptology cry = new Cryptology();
    		cry.rsaEncryption();
    		cry.rsaDecryption();
    	
    	}
    }
    

    测试结果

    展开全文
  • RSA加密解密算法 java版 源码 可运行 很实用
  • RSA 加密解密算法C语言 (含linux)

    热门讨论 2012-05-14 10:06:51
    RSA 加密解密算法C语言 (含linux)内含代码加实例
  • RSA加密解密算法—编程实战 转载于:https://www.cnblogs.com/liuys635/p/11181277.html

    RSA加密解密算法—编程实战

    转载于:https://www.cnblogs.com/liuys635/p/11181277.html

    展开全文
  • RSA加密解密算法—数论基础 转载于:https://www.cnblogs.com/liuys635/p/11181270.html

    RSA加密解密算法—数论基础

    转载于:https://www.cnblogs.com/liuys635/p/11181270.html

    展开全文
  • 主要给大家介绍了关于同时兼容JS和C#的RSA加密解密算法,通过该算法可以对web提交的数据进行加密传输,文中通过图文及示例代码介绍的非常详细,需要的朋友们可以参考借鉴,下面来一起看看吧。
  • rsa加密解密算法

    2009-11-17 07:13:13
    1978年就出现了这种算法,它是第一个既能用于数据加密 也能用于数字签名的算法。它易于理解和操作,也很流行。算 法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和 Leonard Adleman。但RSA的安全性一直...
  • MFC实现RSA加密解密算法(注释详细)

    热门讨论 2009-08-09 20:53:19
    MFC实现RSA加密解密算法,其中有详细的注释
  • rsa加密解密算法C语言代码

    热门讨论 2010-12-26 13:03:28
    rsa加密解密算法C语言代码 #include #include #include <stdlib.h> #include <time.h> #include #include #define MAX 100 #define LEN sizeof(struct slink) void sub(int a[MAX],int b[MAX] ,int c[MAX] ); ...
  • RSA算法:用java实现的带界面的RSA加密解密算法
  • crypto/rsa crypto/x509 encoding/base64 encoding/pem errors fmt io/ioutil ) func main() { str := &^%$#@___Oneck___@#$%^& fmt.Println(初始字符串,str) cipherBytes,err := RSAEncrypt([]byte(str),...
  • 3DES和RSA加密解密算法,简单实用,直接放参数即可
  • RSA加密解密算法Java

    千次阅读 2017-12-15 14:34:28
     RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenA dleman开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据...
  • 用javaRSA加密解密算法

    2011-04-08 15:46:14
    用JAVA实现RSA解密加密算法。~亲测可以运行

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,788
精华内容 1,915
关键字:

rsa加密解密算法