RSA加密算法的java实现
来源:互联网 发布:破解软件游戏 编辑:程序博客网 时间:2024/06/01 07:25
算法描述:
(1)选择一对不同的、足够大的素数p,q。
(2)计算n=pq。
(3)计算f(n)=(p-1)(q-1),同时对p, q严加保密,不让任何人知道。
(4)找一个与f(n)互质的数e,且1< e < f(n)。
(5)计算d,使得de≡1 mod f(n)。这个公式也可以表达为d ≡e-1 mod f(n)
这里要解释一下,≡是数论中表示同余的符号。公式中,≡符号的左边必须和符号右边同余,也就是两边模运算结果相同。显而易见,不管f(n)取什么值,符号右边1 mod f(n)的结果都等于1;符号的左边d与e的乘积做模运算后的结果也必须等于1。这就需要计算出d的值,让这个同余等式能够成立。
(6)公钥KU=(e,n),私钥KR=(d,n)。
(7)加密时,先将明文变换成0至n-1的一个整数M。若明文较长,可先分割成适当的组,然后再进行交换。设密文为C,则加密过程为:。
(8)解密过程为:。
理论参考出处
/**@author:micro_hz2015年8月27日 *//* * RSA加密算法 */public class RSAtest { public static int encryption(int message) { /* * 随机选取两个两位数的质数p,q */ int[] array = new int[2]; int k = 0,p; while(k != 2) { p = (int) (Math.random() * 100); for(int i = 2;i <= p;i ++) { if(p % i == 0 && i != p) { break; } if(i == p) { System.out.println("选出了素数 "+p); array[k ++] = p; } } } //已经选出了两个质数 int n = array[0] * array[1]; int t = (array[0] - 1) * (array[1] - 1);// n = 33;// t = 20; System.out.println("n: "+n+" t: "+t); /* * 选出公钥e要去t互质,e < t */ int e = 0; for(int i = t - 1;i >= 2;i --) { for(int q = 2;q <= i;q ++) { if(i % q == 0 && t % q == 0 && q != i) { break; } if(q == i) { e = i; System.out.println("选出了与t互质的公钥e:"+e); break; } } if(e != 0) { break; } } /* * 接下来我们来选出私钥d,d*e mod t == 1 */ int d = 0; while(d * e % t != 1 || e == d) { d ++; } System.out.println("选出了私钥d: "+d); /* * 都准备好了,可以加密解密了。 */ //加密// e = 3;d = 7;n = 33; t = 20; int c = (int) (Math.pow(message, e) % t); System.out.println("加密后的数据为:"+c); //解密 int m = (int) (Math.pow(c, d) % t); System.out.println("解密后的数据为:"+m); return c; } public static void main(String args[]) { for(int i = 2 ;i < 9; i++) { System.out.println("明文"+i); encryption(i); System.out.println(); } }}
由于double类型的内存储存空间受限,因此程序只参考作用。
0 0
- RSA加密算法的java实现
- RSA加密算法的java实现
- RSA加密算法-Java实现
- RSA加密算法的实现
- java rsa加密算法java实现
- RSA加密算法java简单实现
- RSA加密算法的简单实现
- java实现的基于RSA的公钥加密算法
- JAVA与GO语言实现的RSA加密算法的互通
- Java实现文件的RSA和DES加密算法
- Java实现文件的RSA和DES加密算法
- Java实现文件的RSA和DES加密算法
- Java实现文件的RSA和DES加密算法
- 基于java类库的RSA加密算法实现
- JAVA实现RSA非对称加密算法
- RSA加密算法原理和java简单实现
- JAVA实现RSA加密,非对称加密算法
- RSA非对称加密算法Java实现
- windows下忘记MySQL密码的修改方法--(转)
- CenOS安装httpie
- linux 防火墙配置规则
- Cube Stacking POJ1988 【并查集的应用】
- Silverlight 控件的ToolTip封装工具使用
- RSA加密算法的java实现
- First Missing Positive
- Git 分支管理和冲突解决
- visualgdb无法查看临时变量的解决方案
- 社説 20150827 企業年金改革 多くの人が活用できる制度に
- Leetcode: Reverse Integer
- 2015.6.23(Metaq和HSF)
- iOS开发-关闭/收起键盘方法总结
- Deploy FAILURE:An app Was not successfully detected by any available buildpack