我正在将一个.Net 4.5项目移植到.Net Core,我被这个函数搞砸了......
public bool IsMessageSignatureValid(byte[] bytes, string signature) {
X509Certificate2 certificate = GetX509Certificate();
RSACryptoServiceProvider rsa = certificate.PublicKey.Key as RSACryptoServiceProvider;
return rsa.VerifyData(bytes, CryptoConfig.MapNameToOID("SHA1"), Convert.FromBase64String(signature));
}
Key
中没有System.Security.Cryptography.X509Certificates.PublicKey
属性CryptoConfig
类有谁可以给我一些想法如何修复它?非常感谢
答案 0 :(得分:2)
您缺少对.NET 4.6中的证书和RSA所做的增强。 .NET Core 1.0和1.1只允许新的处理方式,因为它在非Windows系统上运行得更好。
public bool IsMessageSignatureValid(byte[] bytes, string signature) {
// New instance each call? If so, dispose this.
X509Certificate2 certificate = GetX509Certificate();
// GetRSAPublicKey returns a new object each time,
// you should definitely using/Dispose it.
using (RSA rsa = certificate.GetRSAPublicKey())
{
return rsa.VerityData(
bytes,
Convert.FromBase64String(signature),
HashAlgorithmName.SHA1,
RSASignaturePadding.Pkcs1);
}
}