RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
RSA算法是一种非对称加密算法,与对称加密算法不同的是,RSA算法有两个不同的密钥,一个是公钥,一个是私钥。
RSA是被研究得最广泛的公钥算法,从提出后经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
一、先导知识
素性检测 随机数生成 中国剩余定理
二、算法流程
1. 密钥生成
1.1 选取大素数p、q
选取两个大素数、,保密。
1.2 计算乘积n、欧拉函数值
计算,计算,其中是的欧拉函数值。
1.3 选取整数e
选取一个整数,满足,且。
1.4 计算乘法逆元d
计算,满足。
1.5 生成密钥
以为公开钥,以为秘密钥。
2. 加密
加密时需要将明文比特串进行分组,分组长度小于,然后对每个明文分组作加密运算。
3. 解密
对密文分组的解密运算为
三、计算问题
密钥的产生
产生密钥时,需要考虑两个大素数p和q的选取。寻找大素数时,一般是先随机选取一个大的奇数,然后使用素性检测算法检验这一奇数是否为素数,若不是,则重新选取另一个大奇数,进行素性检测,知道找到素数为止。
选定和后,需要考虑的选取和的计算,这一问题可由扩展欧几里得算法完成。
算法速度提升
利用中国剩余定理,可以极大的提高解密运算的速度。