RSA算法
1、非对称加密算法
非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 ——————百度百科
假设A向B通过非对称加密算法进行信息交换,流程如下:
①B生成一定密钥并将公钥公开,A获取B的公钥
②A使用该公钥对信息进行加密后再发送给B
③B收到A发送过来的加密信息后,再用自己的私钥对信息解密
2、RSA算法
RSA算法就是非对称加密算法。RSA算法实现分为4个部分:生成密钥、加密、解密和签名。
(1)生成密钥
①生成两个不相等的质数p和q(p和q不应太过相近)。假设p=13,q=19。
②计算出p和q的乘积为n。此处n=247。
③计算n的欧拉函数φ(n)。φ(247)=216。
④选择一个整数e,使1<e<φ(n),并且与φ(n)互质。此处e=31。
⑤找出一个整数d,使得e×d÷φ(n)......1,余数等于1。可知d为7。
d=7为e=31关于φ(n)=216的模逆元。
⑦得到私钥和公钥
(2)加密
A获取B的公钥后对信息进行加密。
①将明文转换为Unicode编码。
②利用加密公式加密为密文。加密公式如下所示:
m为Unicode编码转换为十进制,e=31,n=247。
(3)解密
①利用解密方程对密文进行解密。解密方程如下所示:
c为Unicode编码转换为十进制,d=7,n=247。
(4)签名
假设A给B发送数据,则过程如下:
①A先用B的公钥对原始数据进行加密
②计算加密数据的哈希值
③用A的私钥将这串哈希值加密,这就是数字签名
④将签名放在加密的数据后面并发给B
B接受到A发来的加密数据后,处理过程如下所示:
①利用B的私钥将密文解密得到明文
②利用A的公钥将数字签名解密,得到哈希值
③将哈希值与收到的加密数据的哈希值进行比较,就可以判断信息来自A
3、相关的知识
1、欧拉函数
欧拉函数是小于等于n的正整数中与n互质的数的个数。
假设p和q互质:
φ(pq)=φ(p)×φ(q),φ(p)=(p-1),φ(q)=(q-1)
可得,φ(n)=φ(p)×φ(q)=(p-1)×(q-1)。
2、模逆元
对于互质的整数a和n,存在整数b使得abΞ1(mod n),则称b为a关于n的模逆元。
3、同余(Ξ)
如果a与m的余数和b与m的余数相同,则称整数a与b对模m同余,记作a≡b(mod m)。可知(a-b)÷m=0。
4、欧拉定理
对任意两个互质的正整数a和m,有
5、哈希函数
哈希函数指将哈希表中元素的关键键值映射为元素存储位置的函数。
两个文件相同,则哈希值一定相同。
4、RSA算法证明