RSA函数生成public key (e) always to 17

RSA function generates public key (e) always to 17

我一直在从事基于 RSA 密钥交换的项目,并且我使用了 Crypto++ 库。我遵循了 https://www.cryptopp.com/wiki/Raw_RSA 中的指南,并且我的项目运行良好。但是,我注意到 public 键始终固定为 1710 = 1116 并且当我查看 rsa.cpp 在 Crypto++ 中 public 密钥是固定的!

同样,我的项目运行良好,但我只想知道为什么..

I noticed that the public key is always fixed to 1710 = 1116 and when I looked in the rsa.cpp in Crypto++ that public key is fixed!
... my project works fine, but I just want to know why..

那是 public 指数,您可以更改它。参见 InvertibleRSAFunction Class Reference

如果您不熟悉该库,

InvertibleRSAFunction 是一个奇怪的名称,但是在 rsa.h 中为 typedef InvertibleRSAFunction PrivateKey 定义了一个类型。 RSA::PrivateKeyInitialize 函数采用 RandomNumberGenerator 是创建键的函数:

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

public 指数 (e) 的唯一要求是它必须与 phi 互质或互质。 Phi是欧拉的Φ函数,定义为(p-1)*(q-1)。它确保有一个倒数(私有指数,d)。

通常选择 public 指数作为低汉明权重,以使 public 键操作更快。低汉明权重意味着它有很少的 1,典型值为 3 (0x3)、17 (0x11) 和 65537 (0x10001)。更少的 1 使得 public 键操作的幂运算更快。

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