rsa算法的实现(编辑修改稿)内容摘要:

37。 (2) 随机生成大素数 p,直到 gcd (e,p1)=1。 其中 gcd(a,b)表示 a,b 取最大公约数 (3) 随机生成不同于 p 的大素数 q,直到 gcd (e,q1)=1。 (4) 计算 n=pq , (n)=(p1)(q1)。 (5) 计算 d,满足 de1 (mod (n))。 (6) 计算 d mod (p1), d mod (q1)。 (7) 计算 q1 mod p。 (8) 将 n,e 放入 RSA公钥;将 n,e,d mod (p1),d mod (q1) q1 mod p 放入 RSA私 钥。 随机素数的产生可分为两个模块: 随机数的产生 随机数不仅用于密钥生成 ,也用作公钥加密时的填充字符。 它必须具有足够的随机性,以防止破译者掌握随机数的规律性后重现密钥的配制过程或者探测到加密块中的明文。 因为 在计算机上不可能产生真正的随机数, 实际采用周期大于 2256位的伪随机序列发生器。 实现过程为: (1) 记录相邻两次敲击键盘的时间间隔,直到不再需要随机事件。 (2) 做 MD5 计算,直到不再需要伪随机数。 素数的产生 对随机数作素性检测,若通过则为素数;否则增加一个步长后再做素性检测,直到找出素数。 素性检测 采用 Fermat 测试。 这个算法的理论依据是费尔马小定理:如果 m是一个素数,且 a 不是 m 的倍数,那么根据费尔马小定理有: a m1=1 ( mod m)。 实际应用时:a m1 = 1 ( mod m) a m = a ( mod m) a= a m ( mod m), 因此对于整数 m,只需计算 a m ( mod m),再将结果与 a 比较,如果两者相同,则 m为素数。 选取 a=2,则 a 一定不会是任何素数的倍数。 3 加密过程 加密规则为: Ek(x)=xb mod n, xZn 加密过程的输入为:明文数据 D,模 数 n, 加密指数 e(公钥加密)或解密指数 d(私钥加密)。 输出为密文。 D 的长度不超过 [log2n]11,以确保转换为 PKCS 格式时,填充串的数目不为 0。 (1) 格式化明文。 采用 PKCS格式: EB = 00 || BT || PS || 00 || D 其中 BT 表示块的类型, PS为填充串, D 为明文数据。 开头为 0 确保 EB 长度大于 k。 对公钥加密 BT=。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。