.net core 验证收到的消息的SHA256签名
我需要验证SHA256签名,我们在每次通信中都会收到消息、签名和公钥 我正在尝试将Azure函数(.net core 3.1)中收到的公钥加载到X509Certificate2对象中,以便能够验证收到的消息的签名和签名 使用以下代码:.net core 验证收到的消息的SHA256签名,.net-core,cryptography,azure-functions,.net Core,Cryptography,Azure Functions,我需要验证SHA256签名,我们在每次通信中都会收到消息、签名和公钥 我正在尝试将Azure函数(.net core 3.1)中收到的公钥加载到X509Certificate2对象中,以便能够验证收到的消息的签名和签名 使用以下代码: string requestBody=等待新的StreamReader(req.Body).ReadToEndAsync(); var data=JsonConvert.DeserializeObject(requestBody); var keyBytes=Co
string requestBody=等待新的StreamReader(req.Body).ReadToEndAsync();
var data=JsonConvert.DeserializeObject(requestBody);
var keyBytes=Convert.FromBase64String(data.key);
X509Certificate2证书=新的X509Certificate2(密钥字节);
激发最后一条语句时,出现以下异常:
at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] data)
at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData)
at leo_signing_library.Function1.<Run>d__0.MoveNext() in
C:\Users\Leo\source\repos\leo-signing-library\Function1.cs:line 30
为清晰起见,请查看调试窗口的屏幕截图:
我添加了nuget包System.Security.Cryptography.X509Certificates
(版本4.3.2),但没有效果
有人知道如何克服这个问题吗?或者有一个基于公钥验证签名的工作示例没有存储在证书存储中
编辑1:
我正在尝试加载以下公钥:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1iyta8F+SLHhbfy+f7fL
8LrsS1LKs05UaHm6muOTlzIdSDwo4dNiWg6rbiL2v4IwpglgL8kvbXLZ8Z3/E6Uu
uUi/IW1Hakgx65Qy4LkGxsnZ/jnLu3DxfY9xycMYq9TfNxIIvFPkbEJY/pwGjZ+q
13WegTJG7m+tqf5GbA3xTLz2DSHXPc7y77OnsDawHsOEou9IZZQCdxCg3L186gU4
yj6mC07Eop3lKMjsqNAXdVmnzcUc+PixQFCSjOcL9Fpbq+aHyYW+Pk9h5dWCGGNQ
wixTIJKTeDxAEkbZ2eLuqQZOCNbkHBn9x+IBxeKMmsmRg/J4/QqwCm+t+wd4VNAJ
ewIDAQAB
-----END PUBLIC KEY-----
欢迎来到StackOverflow。您能分享整个堆栈跟踪吗?看起来像
数据。key
不是证书。根据名称,它可能是公钥,而不是证书。你完全正确,我已经更新了问题,以更清楚地说明我要做什么。这是SPKI或X509格式的公钥,PEM编码。在.NETCore3.1下,有用于导入这样一个密钥的,但DER编码的。要将PEM转换为DER,请删除页眉和页脚,并对正文进行Base64解码。
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1iyta8F+SLHhbfy+f7fL
8LrsS1LKs05UaHm6muOTlzIdSDwo4dNiWg6rbiL2v4IwpglgL8kvbXLZ8Z3/E6Uu
uUi/IW1Hakgx65Qy4LkGxsnZ/jnLu3DxfY9xycMYq9TfNxIIvFPkbEJY/pwGjZ+q
13WegTJG7m+tqf5GbA3xTLz2DSHXPc7y77OnsDawHsOEou9IZZQCdxCg3L186gU4
yj6mC07Eop3lKMjsqNAXdVmnzcUc+PixQFCSjOcL9Fpbq+aHyYW+Pk9h5dWCGGNQ
wixTIJKTeDxAEkbZ2eLuqQZOCNbkHBn9x+IBxeKMmsmRg/J4/QqwCm+t+wd4VNAJ
ewIDAQAB
-----END PUBLIC KEY-----