我想要生成RSA密钥对并记录pubkey参数(模数和指数,n和e),从现有密钥集中获取参数(以der格式)或从我自己的参数生成pubkey对
我是trying to do the first with Crypto++,但是吐出的ders被openssl报告为无效。没有帮助Crypto ++ wiki和doc页面也在今晚下来!
然后我尝试使用Crypto ++制作的一些随机密钥参数来研究在openssl中生成密钥对的方法,但几个小时之后我仍然试图破译所有命令行参数。
这并不意味着是一个安全的密钥,只是我在项目中的一些单元测试的工作,它从JWK获得pubkeys作为(n,e)对,并且需要验证它是否可以正确地验证签名。但要做到这一点,我需要私有der和public(n,e),并且必须有一种更简单的方法,而不是尝试使用openssl包装器中的一个来记录关键参数,因为它会生成密钥对。
答案 0 :(得分:1)
我试图用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密钥对并记录pubkey参数(模数和指数,n和e),从现有密钥集中获取参数(以der格式)或从我自己的参数生成pubkey对
循环回到这个......在RSA Cryptography RSA Encryption Schemes和RSA Signature Schemes的维基上有很多例子。
一般来说,Crypto ++会对ASN.1 / DER中的所有密钥进行编码。 Load
和Save
提供“主题信息”部分,DEREncode
和BERDecode
仅提供“原始密钥”部分。再次,看看Keys and Formats。
如果要处理PEM编码密钥,则需要PEM Pack。它是一个附加组件,您必须下载它,然后使用包含的PEM包构建库。
如果您提供具体数据,例如您正在尝试处理的十六进制编码密钥,那么我们可以更多地说明您应该做什么。