我试图用 Crypto++ 做第一个,但它吐出的 ders 被 openssl 报告为无效......
(来自链接的 GitHub):
RSA::PublicKey publicKey(params);
FileSink pubsink("pubkey.der");
publicKey.DEREncode(pubsink);
当publicKey.Save您想保存subjectPublicKeyInfo. subjectPublicKeyInfo是您正在考虑的 RSA 密钥加上外部 X.509 包装,如 OID 和版本号。
然后,我尝试通过使用 Crypto++ 制作的一些随机密钥参数来研究在 openssl 中生成密钥对的方法,但几个小时后,我仍然无法破解所有命令行参数。
您可能会发现Crypto++ wiki 中的Keys and Formats很有帮助。它还提供 OpenSSL 和 GnuTLS 命令。
我想生成一个 RSA 密钥对并记录公钥参数(模数和指数,n 和 e),从现有的一组密钥(以 der 格式)中获取参数,或者从我自己的参数生成一个公钥对。
回到这个... 维基上有很多例子RSA Cryptography RSA Encryption Schemes和RSA Signature Schemes。
一般来说,Crypto++ 对 ASN.1/DER 中的所有密钥进行编码。Load并Save提供“主题信息”部分,并DEREncode仅BERDecode提供“原始密钥”部分。再次,看看Keys and Formats。
如果要处理 PEM 编码的密钥,则需要PEM Pack。它是一个附加组件,您必须下载它,然后使用包含的 PEM 包构建库。
如果您提供具体数据,例如您尝试处理的十六进制编码密钥,那么我们可以更多地说明您应该做什么。