我有一个Web服务,需要对所有请求进行正文签名。所以我想知道这样做的最佳实践是什么?我正在使用此方法来对字符串进行签名,但是我猜它不是最好的方法。因为我的私钥从未处理过:
using (var provider = new RSACryptoServiceProvider())
{
provider.ImportParameters(ProjectValues.PrivateKey.ExportParameters(true));
encryptByteList = provider.SignData(content, CryptoConfig.MapNameToOID("SHA256"));
}
在第一次加载项目时,我已经阅读了一次证书和私钥。像这样:
Certificate = new X509Certificate2("my pfx path", "***", X509KeyStorageFlags.Exportable);
PrivateKey = (RSACryptoServiceProvider)Certificate.PrivateKey;
然后我找到了这种方法:
var cert = new X509Certificate2("my pfx path", "***", X509KeyStorageFlags.Exportable);
using (var rsa = cert.GetRSAPrivateKey())
{
encryptByteList = rsa.SignData(content, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
}
但是如果我在每个请求中都从文件中读取证书,则此方法有效。显然这不是一种有效的方法