RSA算法,自己的理解!
来源:互联网 发布:淘宝上的补漆笔好用吗 编辑:程序博客网 时间:2024/04/28 05:34
昨晚看书的时候,看到了RSA的算法,不是很懂,所以今天早上就早早起来看了关于RSA的书。搞了好久才弄得明白!
RSA算法的描述:
1.选取足够大的两个素数p和q,令n=p*q,则t=(p-1)*(q-1),这里的t用到的是欧拉定理来算的。
2.选取适当的加密密钥e和解密密钥d,使得其满足e*d≡ 1(mod t)
3.公开的密钥是n和e,p、d和q要保密。
4.加密运算:E(x) = x^e mod n
5.解密运算:D(y) =y^d mod n
算法的介绍就是上面的这些。但是我不明白d是如何确定的。最后我从Google中找到了答案。那就是用欧几里德算法的扩展,用乘法逆元来求得d,首 先我们应该懂得的几个知识点:欧几里徳算法是求得两个整数的最大公因子:**(a,d)=**(b,a mod b),这个式子是成立的。也就是说a,b的最大公因子是和b,a mod b的最大公因子一样。例如:9和6的最大公因子是3,那么9和3的最大公因子也是3.
同余式:设n是一个正整数,a,b属于z,如果a mod n = b mod n,则称a,b模n同余,记作:a≡b(mod n)。
乘法逆元:设a,如果存在x,满足x*a≡1(mod) n,则x是a的模n乘法逆元。
现在我们来看一个例子:素数47和59,所以n=47*59=2773;t=46*58=2668;现在我们取e=63;现在我们来算一下d;因为e*d≡ 1(mod t),所以可以用乘法逆元求解:2668=42*63+22
63 = 2*22+19
22 = 1*19+3
19 = 6*3+1
则:1=19-(6*3)
=19-(6*(22-19))
=7*19-6*22
=7*(63-2*22)-6*22
=7*63-20*22
=7*63-20(2668-42*63)
=847*63-20*2668
由上可知d=847;最终我们获得了e=63;d=847;n=2773;
我们对2进行加密:2^63%2773=976;然后解密:976^847/2773=2和我们原来的一样。
就写到这里吧,下回研究怎么用代码实现!!
- RSA算法,自己的理解!
- 对于RSA算法的一些理解
- 自己理解的算法
- RSA算法理解
- 怎么理解RSA算法
- RSA算法的理解以及实现(C++)
- rsa加密算法的理解
- RSA算法的实现
- RSA算法的使用
- RSA 算法的使用
- RSA算法的实现
- RSA算法的原理
- RSA 算法的使用
- KMP 算法 自己的一些理解
- 自己关于KMP算法的理解
- 八大基础算法 自己的通俗理解
- 4.17.0 RSA 私钥和公钥的一些自己的理解
- RSA 私钥和公钥的一些自己的理解
- 激情点燃梦想
- 毕业设计篇
- C# 15位身份证号码转18位算法实现
- 续:minis3c2440嵌入式开发板学习之u-boot移植(二)
- DateTime日期类型格式化显示
- RSA算法,自己的理解!
- 入门PHP 方法.....其实PHP也就那样...
- 阳光灿烂
- 防止别人PING你的计算机
- FF与IE对javascript和CSS的区别
- 去掉点击链接时出现的虚线
- 在Carbide c/c++中如何打开一个已存在的工程
- vs2008那里每行有空格的地方都会显示有点了,省略号那种
- 第一真正登陆CSDN