2

我必须编写一个程序来与 USB 设备建立安全通信。我必须使用它生成的私钥,它以 PKCS#1 格式存储。由于我在程序的一部分中使用了 Crypto++,因此我也想将它用于此目的。

但是,我找不到从内存中导入 RSA 私钥的方法。它只接受 PKCS#8 格式的私钥。一些专业人士可以向我展示如何做到这一点的示例代码吗?非常感谢!

4

1 回答 1

2

PKCS#1 格式是 ASN.1 编码的。对于RSAPublicKeyRSAPrivateKey,它很简单:

RSA::PublicKey publicKey(...);

ByteQueue queue;
publicKey.Save(queue);

// The public key is now in the ByteQueue in PKCS #1 format

// ------------

// Load a PKCS #1 private key
byte key[] = {...}
ArraySource arr(key, sizeof(key));

RSA::PrivateKey privateKey;
privateKey.Load(arr);

// The private key is now ready to use

Crypto++ wiki 的Keys and Formats下更详细地讨论了保存和加载密钥。

于 2013-10-03T07:21:43.603 回答