我对密码学很陌生,并且在 Windows 上使用 C#.NET 尝试解决它
我使用以下命令生成了椭圆曲线 P-256(又名 secp256r1 和 prime256v1)密钥:
openssl ecparam –name prime256v1 -genkey –noout –out private.key
我使用以下命令生成了证书签名请求:
openssl req –new –key private.key –out certreq.csr –sha256
另一个团队向我发送了一个 Base-64 编码的证书作为回应。到目前为止,一切都很好。
我现在收到了一些“测试”数据,我需要使用私钥计算 ECDSA 签名。私钥看起来像:
-----BEGIN EC PRIVATE KEY-----
FunnyHow?LIKEACLOWN?DOIAMUSEYOU?DOIMAKEYOULAUGH?==
-----END EC PRIVATE KEY-----
到目前为止,我一直在努力处理类似于以下内容的代码:
byte[] cngBlob; // This was calculated based on another StackOverFlow post
byte[] testData = "JoePesciWasGreatInGoodfellas";
CngKey cngKey = CngKey.Import(cngBlob, CngKeyBlobFormat.EccPrivateBlob);
ECDsaCng eCDsaCng = new ECDsaCng(cngKey);
byte[] signatureECDSA = eCDsaCng.SignData(testData);
我尝试计算byte[] cngBlob
使用私钥文件,基于微软 CNG |如何将 PEM 编码的 ECDSA 私钥导入 MS Key Storage Provider https://stackoverflow.com/questions/50080937/microsoft-cng-how-to-import-pem-encoded-ecdsa-private-key-into-ms-key-storage但我没有得到正确的答案byte[] signatureECDSA
.
如何从文件中读取私钥,然后使用它来计算测试数据的 ECDSA 签名?
我已经开始深入研究密码学的迷人世界,但我需要一些时间才能熟悉它。我走在正确的轨道上吗?在此期间如果有任何提示可以帮助我解决这个问题,我将不胜感激。