从RSA密钥对中获取params

时间:2017-08-25 04:31:17

标签: openssl cryptography rsa crypto++ jwk

我想要生成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包装器中的一个来记录关键参数,因为它会生成密钥对。

1 个答案:

答案 0 :(得分:1)

  

我试图用Crypto ++做第一次,但是吐出的ders被openssl报告为无效......

     

(来自链接的GitHub):

RSA::PublicKey publicKey(params);
FileSink pubsink("pubkey.der");
publicKey.DEREncode(pubsink);

如果要保存publicKey.Save,请使用subjectPublicKeyInfosubjectPublicKeyInfo是您正在考虑的RSA密钥加上外部X.509包装,如OID和版本号。

  

然后我尝试使用Crypto ++制作的一些随机密钥参数来研究在openssl中生成密钥对的方法,但几个小时之后我仍然试图破译所有命令行参数。

您可能会从Crypto ++ wiki中找到Keys and Formats。它还提供OpenSSL和GnuTLS命令。

  

我想要生成RSA密钥对并记录pubkey参数(模数和指数,n和e),从现有密钥集中获取参数(以der格式)或从我自己的参数生成pubkey对

循环回到这个......在RSA Cryptography RSA Encryption SchemesRSA Signature Schemes的维基上有很多例子。

一般来说,Crypto ++会对ASN.1 / DER中的所有密钥进行编码。 LoadSave提供“主题信息”部分,DEREncodeBERDecode仅提供“原始密钥”部分。再次,看看Keys and Formats

如果要处理PEM编码密钥,则需要PEM Pack。它是一个附加组件,您必须下载它,然后使用包含的PEM包构建库。

如果您提供具体数据,例如您正在尝试处理的十六进制编码密钥,那么我们可以更多地说明您应该做什么。