- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
通常,用户将拥有 PEM 编码的 RSA 私钥。 Crypto++ 要求这些 key 为 DER 格式才能加载。我一直在要求人们事先使用 openssl 手动将他们的 PEM 文件转换为 DER,如下所示:
openssl pkcs8 -in in_file.pem -out out_file.der -topk8 -nocrypt -outform der
这很好,但有些人不明白如何做,也不想这样做。所以我想在程序中自动将 PEM 文件转换为 DER 文件。
是像从 PEM 中剥离“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”一样简单,还是还需要其他一些转换?有人告诉我,在这些标记之间,它只是 b64 编码的 DER。下面是一些演示该问题的代码:
// load the private key
CryptoPP::RSA::PrivateKey PK;
CryptoPP::ByteQueue bytes;
try
{
CryptoPP::FileSource File( rsa.c_str(), true, new CryptoPP::Base64Decoder() );
File.TransferTo( bytes );
bytes.MessageEnd();
// This line Causes BERDecodeError when a PEM encoded file is used
PK.Load( bytes );
}
catch ( CryptoPP::BERDecodeErr )
{
// Convert PEM to DER and try to load the key again
}
我想避免对 openssl 进行系统调用并完全在 Crypto++ 中进行转换,以便用户可以提供任何一种格式和“正常工作”的东西。感谢您的建议。
最佳答案
是的,它是使用 Base64 编码的 DER 流。但请注意,除了剥离 BEGIN 和 END 标记外,在 RSA key 格式的情况下,您还需要剥离可能插入 BEGIN 标记和编码数据之间的任何标志。只有剩下的部分才能成功Base64解码。您似乎将完整的证书文件提供给解码器,需要修复。
关于c++ - 在 Crypto++ 中加载 PEM 编码的私有(private) RSA key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9815001/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!