RSA 算法的C++实现 ➢ 概述 RSA 公钥加密算法是1977 年由Ron Rivest、Adi Shamirh 和 LenAdleman 在(美国麻省理工学院)开发的
RSA 取名来自开发他们三者的名字
RSA 是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO 推荐为公钥数据加密标准
它的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的著名难题,至今没有有效的方法予以解决,因此可以确保 RSA 算法的安全性
RSA 算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法
它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受
为提高保密强度,RSA 密钥至少为 500 位长,一般推荐使用 1024 位
RSA 算法是一种非对称密码算法,所谓非对称,就是指该算法需要 一对密钥,使用其中一个加密,则 需要 用另一个才 能解密
RSA 的算法涉 及 三个参 数,n、e1、e2
其中,n 是两 个大质 数 p、q 的积 ,n 的二 进 制 表 示 时 所占 用的位数,就是所谓的密钥长度
e1 和 e2 是一对相 关 的值 ,e1 可以任 意 取,但 要 求e1 与 (p-1)*(q-1)互 质 ;再 选 择 e2,要 求 (e2*e1)mod((p-1)*(q-1))=1
(n 及 e1),(n 及 e2)就是密钥对
RSA 加解密的算法完 全相 同 ,设 A 为明 文,B 为密文,则 :A=B^e1 mod n;B=A^e2 mod n; e1 和 e2 可以互 换 使用,即 : A=B^e2 mod n;B=A^e1 mod n;