回顾:项目数据安全需要,对数据使用私钥签名,公钥验证。'RSA-SHA256'加密方式。
1. 读取证书有两种方法,第一种是直接把.pfx 安装到server里直接然后code里直接读取,第二种是直接根据证书物理物理路径和密码直接读取证书信息。推荐第一种会速度更快一些。 第一种,从server读取证书,可以根据subject名字,也可以导入时设置friendly name,查找该证书,然后一定要在管理key的属性中给iis_iusrs读取操作权限。不然private key 没有权限读取,会有error.
public string SignatureFormatter(string privateKeyPath, string SignatureData, string certPassword)
{ //第一种 //第二种
X509Certificate2 c3 = DataCertificate.GetCertificateFromStore("证书subject");//new X509Certificate2(privateKeyPath, certPassword, X509KeyStorageFlags.Exportable);
string keyPrivate3 = c3.PrivateKey.ToXmlString(true);
byte[] signData = System.Text.Encoding.UTF8.GetBytes(SignatureData);
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSA.FromXmlString(keyPrivate3);
byte[] inArray = RSA.SignData(signData, CryptoConfig.MapNameToOID("SHA256"));
return Convert.ToBase64String(inArray);
}