收藏
回答

C# 支付接口V3 中ImportPkcs8PrivateKey这个方法不存在要如何处理

网上查ImportPkcs8PrivateKey仅用NET Croe3.0以上项目中

我这边项目是net framework,基础有点差,麻烦指教下

回答关注问题邀请回答
收藏

3 个回答

  • peng
    peng
    2022-04-07

     using (RSACryptoServiceProvider sha256 = new RSACryptoServiceProvider())

                {

                    byte[] dataInBytes = Encoding.UTF8.GetBytes(message);

                    sha256.FromXmlString(this.CertPrivateKey);

                    byte[] inArray = sha256.SignData(dataInBytes, CryptoConfig.MapNameToOID("SHA256"));

                    string sign = Convert.ToBase64String(inArray);

                    return sign;

                }

    2022-04-07
    有用 4
    回复 4
    • 不吃草的羊
      不吃草的羊
      2022-04-07
      本人太菜,加你微信啊大哥。细说下
      2022-04-07
      回复
    • peng
      peng
      2022-04-07回复不吃草的羊
      把你截图方法的内容换成我贴的试试,this.CertPrivateKey 换成privateKey
      2022-04-07
      回复
    • 不吃草的羊
      不吃草的羊
      2022-04-07
      然后会提示一个错误
      2022-04-07
      回复
    • 不吃草的羊
      不吃草的羊
      2022-04-07
      vs  自动提示里没有报错,运行时报错
      2022-04-07
      回复
  • 不吃草的羊
    不吃草的羊
    2022-04-07
    protected string Sign(string message)
        {             
            X509Certificate2 cert = new X509Certificate2(@"p12证书路径", 商户ID, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
            var privateKey = cert.PrivateKey.ToXmlString(true);
            var certSerialNo = cert.SerialNumber;        
            using (RSACryptoServiceProvider sha256 = new RSACryptoServiceProvider())
            {
                byte[] dataInBytes = Encoding.UTF8.GetBytes(message);
                sha256.FromXmlString(privateKey);
                byte[] inArray = sha256.SignData(dataInBytes, CryptoConfig.MapNameToOID("SHA256"));
                string sign = Convert.ToBase64String(inArray);
                return sign;            
            }
        }
    

    万分感谢 peng 大佬的帮助。此处记录下解决方法

    2022-04-07
    有用 4
    回复 1
  • 梓辰
    梓辰
    2022-10-18

    "{\"code\":\"SIGN_ERROR\",\"message\":\"Authorization不合法\"}"为什么老是出现签名错误

    2022-10-18
    有用
    回复
登录 后发表内容