簡體   English   中英

如何以 PKCS #1、ASN.1 DER 形式加載 RSA 公鑰

[英]How to load RSA public key in PKCS #1, ASN.1 DER form

我們有一個 Go 應用程序,它生成一個 RSA 密鑰並將公鑰以 PKCS #1、ASN.1 DER 形式發送給客戶端。

https://golang.org/pkg/crypto/x509/#MarshalPKCS1PublicKey

當我嘗試使用 Botan 1.10.17 在 c++ 客戶端中加載相同的公鑰時:

try
{
    Botan::AutoSeeded_RNG rng;
    Botan::DataSource_Memory pubKeyMem(publicKey); // here public key is in PKCS #1, ASN.1 DER form
    Botan::RSA_PublicKey *rsaKey = dynamic_cast<Botan::RSA_PublicKey*>(Botan::X509::load_key(pubKeyMem));
    ...
}
catch (std::exception& e)
{
    cout << e.what();
}

我得到一個例外:

Decoding error: X.509 public key decoding failed

這是服務器生成的公鑰:

-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEA80s5aG/cuYU/xT3WsC5FkJmMdCg1SFFuc+qJT8aB1IgR3mnKGARf
tKpZ3Uk8Ehp1PSgS+tJE+NhE5fjU8S2K9EtGbep4DAK/TmeJ1TQvJXtCcrMH7MFV
Ck57X972MChnR5wJYrCnBYXt4Q9f76AT4PfFHCgN+eePYD175VIUN7rZlqZaqgX4
LAWQQpZsrj1DersOeH6YfMeuXplTljePGlKcutvWtr3LqGSAkPKAngW3gGTNcxXh
s8EW0CxXctvPLuWArlV2afU6XIpqWGVxB3NlRVuU64XvOE+aXyL2LyX2DXCWzzs8
mKjwp4SQW2xiJiQoRy3gmAR8oV8Jgffs2wIDAQAB
-----END RSA PUBLIC KEY-----

看來 Botan 1.10.17 需要 PKIX、ASN.1 DER 形式的公鑰。 所以在 Golang 中使用x509.MarshalPKIXPublicKey()而不是x509.MarshalPKCS1PublicKey()使得 C++ Botan 客戶端工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM