上QQ阅读APP看书,第一时间看更新
2.3.2 RSA算法
Rivest-Shamir-Adleman(RSA)算法是最流行和最安全的公钥加密方法之一。该算法利用了这样一个事实:根据数论,寻求两个大素数相对比较简单,但是将它们的乘积进行因式分解却极其困难,因此可以将乘积公开,作为加密密钥。加密密钥是公开的,解密密钥由用户保密。
假设使用加密密钥key(e,n),其实现算法如下:
将消息表示为0到(n-1)之间的整数。大型消息可以分解为多个块。然后,每个块将由相同范围内的整数表示。
取其e次方再模n,得到密文消息C;
要解密密文消息C,取其d次方再模n;
加密密钥(e,n)是公开的。解密密钥(d,n)由用户保密。
如何确定e,d和n的适当值?
选择两个非常大(100位以上)的素数,将其表示为p和q。
将n设为等于p * q。
选择任何大整数d,使得GCD(d,((p-1)*(q-1)))= 1。
求e使得e * d = 1(mod((p-1)*(q-1)))。
Rivest、Shamir和Adleman为每个所需的操作提供了有效的算法。