.net core SHA256-RSA的数字签名算法

最近公司对接微信支付,用到了wechatpay-api-v3接口规则,遇到SHA256-RSA加密问题,搞了很久才弄好,接下来分享SHA256-RSA加密:

获取签名证书私钥

       /// <summary>
        /// 获取签名证书私钥
        /// </summary>
        /// <param name="certPath">证书文件路径</param>
        /// <param name="mchIdPwd">密码(默认服务商ID)</param>
        /// <returns></returns>
        private static RSA GetCertPrivateKey(string certPath, string mchIdPwd)
        {
            var pc = new X509Certificate2(certPath, mchIdPwd, X509KeyStorageFlags.Exportable);
            return (RSA)pc.PrivateKey;
        }

根据私钥对请求微信数据进行签名

/// <summary>
        /// 根据证书签名数据
        /// </summary>
        /// <param name="message">要签名的数据</param>
        /// <param name="certPath">证书路径</param>
        /// <param name="mchIdPwd">密码</param>
        /// <returns></returns>
        public string Sign(string message, string certPath, string mchIdPwd)
        {
            var rsa = GetCertPrivateKey(certPath, mchIdPwd);

            RSACryptoServiceProvider res = new RSACryptoServiceProvider();
            res.ImportParameters(rsa.ExportParameters(true));
            byte[] data = Encoding.UTF8.GetBytes(message);
            byte[] signature = res.SignData(data, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);

            return Convert.ToBase64String(signature);
        }

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读