RSA算法

来源:互联网 发布:龚品梅 知乎 编辑:程序博客网 时间:2024/06/02 06:50

0.RSA算法

RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥

1.释义

所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。

2.参数

RSA的算法涉及三个参数,n、e1、e2。其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。

(1)e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质

(2)选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。(n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥(n,e2)为私钥。

3.算法思路

RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e2 mod n;B=A^e1 mod n;(公钥加密体制中,一般用公钥加密,私钥解密)e1和e2可以互换使用,即:A=B^e1 mod n;B=A^e2 mod n

4.样例示范

(1)我们选择两个素数:p=3,q=11,即两个“大质数”,这里使用比较小的3与11是因为方便计算而已,所以我们得到n = p*q=33,

(2)现在我们来取e1值,e1可以任意取,但是e1必须与(p-1)(q-1) = (3-1)(11-1) = 20互质,所以我们可以取一个e1 = 3,即与20互质(两个数之间除了1之外没有公约数。)

(3)再选择e2,要求(e2* e1) mod ((p-1) * (q-1)) = 1; 解方程可得,e2 = 7。

(4)所以得到(33,3)为公钥,(33,7)为私钥。

(5)设A = 2为明文,则得到的密文 = 2^3 mod 33 = 8;即8为密文;

(6)再对密文8进行操作,得到:8^7 mod 33 = 2;得到明文。即明文为2,算法得到验证。(8^7 = 2097152)


5.总结

(1)对于取模运算,这里有很多的故事可以说,请读者自己对其进行探索。



0 0