RSA函数生成的公钥(e)始终为17
RSA function generates public key (e) always to 17
我一直在做一个基于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::PrivateKey
的Initialize
函数采用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}
。
相关文章:
- 将TPM公钥序列化为DER或PEM
- 使用公钥加密消息:BER 解码错误
- 比较两个公钥与OpenSSL API
- 以 x64 配置访问证书公钥
- 使用 char 数组公钥的 OpenSSL 进行 RSA 加密
- 如何获取两个 std::map 的公钥?
- BERDecodeError尝试使用公钥验证签名时出错
- 从字符串 Crypto++ 导入 RSA 公钥/私钥
- 使用 gpgme 在 c++ 中导出 gpg 公钥
- 如何在C++中将 JWK 公钥转换为 PEM 格式
- 打印私人/公钥
- 一代 RSA-2048 密钥(公钥和私钥)
- RSA公共加密使用X509证书C 的公钥
- 在 SSH 上的公钥-私钥身份验证上的 libcurl 实现
- 使用 WinHttpQueryOption 获取公钥的大小
- 使用公钥 X509 V3 (PKCS7) 使用 AES 128 模式 cbc 加密文件
- Libgit2 - 无法验证 SSH 会话:无法打开公钥文件
- 使用Crypto++库仅从x压缩坐标检索ECDSA公钥
- 在 GnuPG 中从 C/C++ 和参数生成公钥/私钥
- RSA函数生成的公钥(e)始终为17