【问题标题】:RSA function generates public key (e) always to 17RSA 函数生成公钥 (e) 始终为 17
【发布时间】:2016-04-11 18:01:18
【问题描述】:

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

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

【问题讨论】:

标签: c++ cryptography rsa crypto++


【解决方案1】:

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

这是公共指数,您可以更改它。见InvertibleRSAFunction Class Reference。

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

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

对公共指数 (e) 的唯一要求是它必须与 phi 互质或互质。 Phi 是欧拉的 Φ 函数,定义为 (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}。

【讨论】:

    猜你喜欢
    • 2017-09-24
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 2019-08-15
    • 2015-05-16
    • 2015-06-22
    • 1970-01-01
    • 2019-11-20
    相关资源
    最近更新 更多