RSA算法是由Rivest, Shamir 和 Adleman 在1978年公开提出的一种公钥密码算法。

一般地,公钥密码算法的安全性都是建立在一些数学难题之上。

目前常用的公钥密码算法主要有两大类:一是基于大整数银子分解问题,如RSA算法;

一是基于离散对数问题,如ElGamal算法、椭圆曲线密码算法、Diffie-Hellman密钥交换协议等。

 

RSA算法如下:

  找两个随机大素数p、q,n=pq,t=(p-1)(q-1);选择随机数e,满足e和t互质,然后计算d=e-1modt,公开(n,e)作为公钥,(n,d)保留作为私钥。

其中d=e-1 mod t比较费解,这牵涉到一些关于数论的知识。在数论中,如果x与y的积除以z得到的余数为1,即x*y mod z=1,则称x和y对模z来说互为逆元,这种逆元关系用符号表示即为

x=y-1 mod z,所以这里的y-1并不是代表y的倒数。

 

RSA加密:RSA算法将待加密的字符串s看作是大整数,若s>n,将s表成a进位,a<n,一般取a=2t,然后把s分段,每段表示的整数值都小于n,然后对每段进行加密,运算如下

  假设明文为P,加密后的密文C=Pe mod n;

RSA解密:解密过程与加密类似,密文为C,则明文P=Cd mod n;

 

关于RSA算法的证明牵涉到一些数学知识,可以参看博客

http://blog.sina.com.cn/s/blog_621417860100en8h.html

 

更多RSA的信息http://baike.baidu.com/view/7520.htm

posted on 2012-03-08 16:30  shosciation  阅读(460)  评论(0编辑  收藏  举报