Анд*_*рей 5 c# cryptography elliptic-curve cng aes-gcm
我一直试图找到如何通过ANY MEANS从文件导入ECC密钥多年.我尝试从Windows证书存储区,.p12文件和PKCS#8 OpenSSL密钥文件访问ECC证书,但没有成功.
我尝试过的很多事情中只有一个是:
StreamReader fs = new StreamReader("key.pem");
String key = fs.ReadToEnd();
byte[] tempkey = System.Text.Encoding.ASCII.GetBytes(key);
CngKey cngKey = CngKey.Import(tempkey, CngKeyBlobFormat.Pkcs8PrivateBlob);
Run Code Online (Sandbox Code Playgroud)
但是没有给出描述性错误消息,只有最后一行有invalid parameters
或者在上面的代码的情况下An error occurred during encode or decode operation.
我正在使用MSDN中的示例程序进行ECDH并将其更改为使用AES的GCM模式.所有这一切都正常,直到我尝试使用预生成的ECC密钥而不是默认情况下在运行时为Microsoft示例创建的ECC密钥.我已经随机尝试了所有的CngKeyBlobFormat
s但是老实说,我无法很好地调试它,因为我不知道这些特定格式在原始数据中的样子.
我的密钥是以下格式,但我愿意使用任何可用的格式(.p12,Microsoft Store,PKCS#8等)
key.pem
-----BEGIN EC PARAMETERS-----
##############################
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
##############################
-----END EC PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
资源
尽管这可能不是唯一的问题,但您不能简单地对 PEM 文件进行 ASCII 编码,然后将其视为 PKCS#8 编码的 blob。PKCS#8 在 ASN.1 中指定,通常采用 BER/DER 编码。PEM Base 64 对此二进制编码进行编码,然后在 Base 64 周围放置页眉和页脚以指示编码的数据类型。
请注意,可能必须跳过编码参数。希望这些参数出现在私钥的编码中。
归档时间: |
|
查看次数: |
1620 次 |
最近记录: |