我在 pem 文件中有一個 ASN.1 編碼的 RSA 私鑰,格式如下:-----BEGIN RSA PRIVATE KEY-----
base64 encoded pkcs8 key
-----END RSA PRIVATE KEY-----現在,要將其導入到我的RSACng對象中,我需要執行以下步驟:讀取文件并提取編碼的密鑰轉換base64為字節以獲取byte[]for pkcs8 密鑰將byte[]ASN.1 (DER)解碼為關鍵信息(模數、指數等)將這些參數加載到RSACng對象中我有以下兩個問題:1.為什么 CngKeyBlobFormat.Pkcs8PrivateBlob 不允許你自動將PKCS8 byte[] 密鑰導入 RSACng 對象?例如,為什么它不能以這種方式工作:var keyData = GetBytesFromPEM(pemstring); // Get the bytes for key that is ASN.1 DER encoded
CngKey cngKey = CngKey.Import(keyData, CngKeyBlobFormat.Pkcs8PrivateBlob);CngKeyBlobFormat 明確指定它是一個 PKCS8 私有 blob。2. 的ASN.1編碼格式是 RSACng.Key.Export(CngKeyBlobFormat.Pkcs8PrivateBlob)什么?我注意到,如果我RSACng按照上面描述的那樣將密鑰加載到 中,然后使用上面的代碼導出相同的密鑰,我會得到以不同 ASN.1 格式編碼的 BLOB,并且在它的 INSIDE 中包含 ASN.1 DER 編碼的密鑰?;旧?,要從這個導出的密鑰中獲取信息,我需要再次從這個 ASN.1 格式解碼它,以獲取存儲在其中的原始密鑰參數,這些參數再次以 ASN.1 DER 編碼。為什么會這么亂?并且是您不能將 ASN.1 DER 編碼的密鑰導入RSACng到CngKeyBlobFormat.Pkcs8PrivateBlob具有不同 ASN.1 編碼格式并且它不是 DER 的原因嗎?潛在的解決方法是將原始 RSA 私鑰編碼為另一種 ASN.1 格式,因為這正是導出密鑰的方式?編輯:顯然,RSACng.Key.Export(CngKeyBlobFormat.Pkcs8PrivateBlob)使用對象標識符(我還不熟悉),但它似乎仍然是 DER 格式
- 1 回答
- 0 關注
- 351 瀏覽
添加回答
舉報
0/150
提交
取消
