Algorithm 版 (精华区)

发信人: Lerry (戒网·学习), 信区: Algorithm
标  题: RSA算法
发信站: 哈工大紫丁香 (2001年11月20日21:41:59 星期二), 站内信件

RSA算法
1978年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法。它
易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShami
r 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。
RSA的安全性依赖于大数难于分解这一特点。公钥和私钥都是两个大素数(大于100个十
进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数
的积。
密钥对的产生。选择两个大素数,p 和q 。计算:n = p * q
然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 )
互质。最后,利用Euclid 算法计算解密密钥d, 满足e * d = 1 ( mod ( p - 1 ) * ( 
q - 1 ) )其中n和d也要互质。数e和n是公钥,d是私钥。两个素数p和q不再需要,应该
丢弃,不要让任何人知道。加密信息 m(二进制表示)时,首先把m分成等长数据块 m1
 ,m2,..., mi
,块长s,其中 2^s <= n, s 尽可能的大。对应的密文是:
ci = mi^e ( mod n ) ( a )
解密时作如下计算:
mi = ci^d ( mod n ) ( b )
RSA 可用于数字签名,方案是用 ( a ) 式签名, ( b )式验证。具体操作时考虑到安全
性和 m信息量较大等因素,一般是先作HASH 运算。RSA 的安全性。RSA的安全性依赖于
大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就
一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数
分解算法。目前,RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最
显然的攻击方法。现在,人们已能分解140多个十进制位的大素数。因此,模数n必须选
大一些,因具体适用情况而定。
由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,无论是软件还是硬件
实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。

--
  不在乎天长地久,就怕你从来没有!

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 天外飞仙]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.531毫秒