一、应用场景
对接第三方系统,第三方系统的接口身份验证的token定期会更新,第三方将rsa非对称加密后的token发给我方系统。后续的接口数据仍用对称加密。兼顾安全性与效率。
二、算法简介
RSA算法依赖于欧拉定理,一个简化版本为大致为 a
和 p
互质,那么有:
具体算法流程如下:
即a
的 p-1
次方 对 p
取余为1
,(a
的 p-1
次方减去1
可以整除 p
)
-
找到互质的两个数,
p
和q
, 计算N = p*q
-
确定一个数
e
, 使得e
与(p-1)(q-1)
互质, 此时公钥为(N, e)
, 告诉给对方 -
确定私钥
d
, 使得e*d-1
能够被(p-1)(q-1)
整除 -
消息传输方传输消息
M
, 加密密文C
为: -
消息接受方通过收到密文消息
C
, 解密消息M
:
三、手工演算
取两个素数,p=11,q=3
1、e的取值过程
N=33, (p-1)*(q-1) = 20,取一个与20互质的数字,比如3.
公钥确定(N=33,e=3)
2、确定私钥d
取一个满足:e*d-1能够被(p-1)*(q-1)整除的,即(3*d-1) % 20 = 0,d可以取7、27、47、67等。比如取7
3、加密解密过程
需要加密的消息为M,M=8。加密得到密文C=8^3%33=17
解密时,得到明文M=17^7%33
四、参考博客:
RSA 非对称加密算法详细介绍_rsa非对称加密算法-CSDN博客
五、后续待整理
具体加密代码部分