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

时间:2016-04-11 18:01:18

标签: c++ cryptography rsa crypto++

我一直致力于基于RSA密钥交换的项目,我使用了Crypto ++ Library。我按照https://www.cryptopp.com/wiki/Raw_RSA中的指南进行操作,我的项目运行正常。但是,我注意到公钥总是固定为17 10 = 11 16 ,当我在Crypto ++中查看rsa.cpp时,公钥是固定的!

同样,我的项目工作正常,但我只是想知道为什么......

1 个答案:

答案 0 :(得分:2)

  

我注意到公钥总是固定为17 10 = 11 16 ,当我在Crypto ++中查看rsa.cpp时,公钥是固定的!<登记/>   ...我的项目工作正常,但我只是想知道为什么......

这是公众指数,你可以改变它。请参阅InvertibleRSAFunction Class Reference

如果您不熟悉该库,则

InvertibleRSAFunction是一个奇怪的名称,但在rsa.h中有typedef InvertibleRSAFunction PrivateKey的类型定义。 RSA::PrivateKey Initialize的{​​{1}}函数是RandomNumberGenerator创建密钥的函数:

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

公共指数(e)的唯一要求是它必须是 phi 的共同素数或相对素数。 Phi 是Euler的Φ-函数,它被定义为(p-1)*(q-1)。它确保存在逆(私有指数,d)。

通常选择公共指数用于低汉明度权重以使公钥操作更快。较低的汉明重量意味着它只有很少的1,典型值是3(0x3),17(0x11)和65537(0x10001)。较少的1使得公钥操作的取幂速度很快。

为完整起见,公钥为 {n,e} 。私钥是 {n,e,d} 。带有CRT参数的私钥为 {n,e,d,p,q,dp,dp,u}