基本概念
RSA是一种非对称加密技术,如图所示,即,假设Bob要向Alice发送文档,Bob将原始文档用Alice的公钥进行加密,随后Alice收到加密文档,用自己的私钥解密。
从这个例子当中,我们可以看到,加密和解密使用的是不同的密钥。
公钥:加密文档的密钥,发送方和接收方都有
私钥:解密文档的密钥,接收方独有
详细可以看本篇文章:【一起学加密0】公钥基础设施(PKI)介绍
算法原理
RSA是目前最优影响力的公钥加密算法。
RSA算法基于一个很简单的数论事实:将两个大质数相乘十分容易,但是要对其乘积进行因式分解及其困难,因此可以将乘积公开,作为公钥密钥。
de=1modφ(n)是计算机安全学中的加密算法RSA, RSA算法中de=1modφ(n)表示de与1关于φ(n)同余,也就是说1除以φ(n)的余数与1除以de的余数相同。
例如:p=3,q=11,d=7;φ(n)=(p-1)(q-1);
n=pq=3×11=33,
φ(n)=(p-1)(q-1)=2*10=20
由de=1modφ(n),
7e=1mod20
即7e 与1 关于20同余,即余数相同 ,而1除以20余数为1 ,
则7e=20k+1 ,其中k为整数。比如k取1,则e=3。
算法举例
密钥计算:
需要加密的明文信息为m=85,选择:e=7,p=11,q=13
n=p*q=11*13=143
z=(p-1)*(q-1)=10*12=120
e*d=1(mod z)
7 * d( mod 120)=1 -------d=103
加密运算
公钥:(e,n)=(7,143)
密文c=p^e (mod n)=123
解密运算
密钥:(d,n)=(103,143)
明文:P=c^d (mod n)=85