RSA函数生成的公钥(e)始终为17

RSA function generates public key (e) always to 17

本文关键字:函数 公钥 RSA      更新时间:2023-10-16

我一直在做一个基于RSA密钥交换的项目,我使用了Crypto++库。我遵循了https://www.cryptopp.com/wiki/Raw_RSA我的项目运行良好。然而,我注意到公钥总是固定为1710=1116,当我在Crypto++中查看rsa.cpp时,公钥是固定的!

再说一遍,我的项目运行良好,但我只想知道为什么。。

我注意到公钥总是固定为1710=1116,当我在Crypto++中查看rsa.cpp时,公钥是固定的
…我的项目做得很好,但我只想知道为什么。。

这是公共指数,您可以更改它。请参阅InvertibleRSAFunction类引用。

如果您不熟悉库,InvertibleRSAFunction是一个奇怪的名称,但在rsa.h中有一个为typedef InvertibleRSAFunction PrivateKey定义的类型。RSA::PrivateKeyInitialize函数采用RandomNumberGenerator,它创建密钥:

void Initialize (RandomNumberGenerator &rng, unsigned int modulusBits, const Integer &e=17)

对公共指数(e)的唯一要求是它必须是同素或相对素的phiPhi是欧拉Φ-函数,定义为(p-1)*(q-1)。它确保有一个逆(私有指数d)。

公共指数通常被选择为较低的hamming权重,以使公钥操作更快。低hamming权重意味着它只有很少的1,典型值为3(0x3)、17(0x11)和65537(0x10001)。更少的1使公钥运算的求幂速度更快。

为了完整性,公钥是{n,e}。私钥是{n,e,d}。具有CRT参数的私钥是{n,e,d,p,q,dp,dp,u}