区块链应用开发指南:业务场景剖析与实战
上QQ阅读APP看书,第一时间看更新

2.3.2 RSA算法

Rivest-Shamir-Adleman(RSA)算法是最流行和最安全的公钥加密方法之一。该算法利用了这样一个事实:根据数论,寻求两个大素数相对比较简单,但是将它们的乘积进行因式分解却极其困难,因此可以将乘积公开,作为加密密钥。加密密钥是公开的,解密密钥由用户保密。

假设使用加密密钥key(en),其实现算法如下:

将消息表示为0到(n-1)之间的整数。大型消息可以分解为多个块。然后,每个块将由相同范围内的整数表示。

取其e次方再模n,得到密文消息C;

要解密密文消息C,取其d次方再模n

加密密钥(en)是公开的。解密密钥(dn)由用户保密。

如何确定edn的适当值?

选择两个非常大(100位以上)的素数,将其表示为pq

n设为等于p * q

选择任何大整数d,使得GCD(d,((p-1)*(q-1)))= 1。

e使得e * d = 1(mod((p-1)*(q-1)))。

Rivest、Shamir和Adleman为每个所需的操作提供了有效的算法。