目录
1. 算法简介
RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在麻省理工学院提出的,RSA(Rivest-Shamir-Adleman)就是他们三人姓氏开头字母拼在一起组成的。从提出后经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
RSA算法设计的最初理念与目标是使互联网安全可靠,旨在解决DES(Data Encryption Standard)算法应用中的密钥分发难题。RSA算法不仅很好的解决了对称加密密钥分发问题,还可用于数字签名,防止身份伪造、信息抵赖和非法篡改,保护数据信息真实性和完整性。
2. 算法原理
RSA是分组密码,对于某个,他的明文和密文是0至
之间的整数,算法原理如下:
2.1 密钥生成
(1)选择2个大素数和
,计算
,
成为算法的模数。
和
必须严格保密,一般要求
和
为安全素数,
的长度大于1024bit。
(2)计算的欧拉函数,即
,
定义为不超过
并且与
互质的数的个数。
(3)从中随机选择一个与
互质的数
作为可公开的加密密钥。
(4)计算解密密钥,
为
模
的乘法逆元,满足
。其中,乘法逆元可通过Eucild算法计算,
和
也要互质,素数
和
不再需要但不可让任何人知道。
由以上步骤得到公钥、私钥
。
2.2 数据加解密
加密信息(二进制表示)时,首先切割为等长数据块
,
,
,
,块长
,其中
,且
的取值要尽可能大。
(1)加密时执行如下计算:,
为对明文
加密后得到的密文;
(2)解密时执行如下计算:,
为对密文
解密后得到的明文。
3. 参考文献
[1]高承实,王永娟,于刚. 区块链中的密码技术[M]. 浙江大学出版社: 2021. 65-69.