【发布时间】:2013-05-09 07:50:55
【问题描述】:
多年来,我一直在尝试寻找如何通过任何方式从文件中导入 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);
但没有给出描述性错误消息,只是最后一行有invalid parameters 或者上面的代码An error occurred during encode or decode operation.
我使用来自 MSDN 的 sample program 用于 ECDH 和 altered it 使用 AES 的 GCM 模式。在我尝试使用预先生成的 ECC 密钥而不是 Microsoft 示例在运行时默认创建的密钥之前,所有这些都可以正常工作。我随机尝试了所有CngKeyBlobFormats,但老实说,我无法很好地调试它,因为我不知道这些特定格式在原始数据中是什么样的。
我的密钥采用以下格式,但我愿意使用任何可行的格式(.p12、Microsoft Store、PKCS#8 等)
key.pem
-----BEGIN EC PARAMETERS-----
##############################
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
##############################
-----END EC PRIVATE KEY-----
资源
【问题讨论】:
标签: c# cryptography elliptic-curve cng aes-gcm