1.从 https://www.nuget.org/packages/BouncyCastle/下载对应的nupkg包,放到本地一个文件夹中

2.打开VS2010,工具—>NuGet程序包管理器设置—>程序包管理器设置

 

 

3.增加程序包源

 

4.工具—>管理解决方案的程序包源,找到刚才新增加的程序包源名称,安装对应的程序包源即可

 

 5.安装之后,已经引入到该解决方案中

6.代码如下:

 1   public string PrivateKeySignResult(string privateKey, string data)
 2       {
 3           string result = string.Empty;
 4   
 5           var rsa = new RSACryptoServiceProvider();
 6           RsaPrivateCrtKeyParameters privateKeyParam = (RsaPrivateCrtKeyParameters)PrivateKeyFactory.CreateKey(Convert.FromBase64String(privateKey)); 
 7           //RSA 私钥格式转换 
 8           privateKey = string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Expon ent><P>{2}</P><Q>{3}</Q><DP>{4}</DP><DQ>{5}</DQ><InverseQ>{6}</InverseQ><D>{ 7}</D></RSAKeyValue>",
 9           Convert.ToBase64String(privateKeyParam.Modulus.ToByteArrayUnsigned()),
10           Convert.ToBase64String(privateKeyParam.PublicExponent.ToByteArrayUnsigned()),
11           Convert.ToBase64String(privateKeyParam.P.ToByteArrayUnsigned()),
12           Convert.ToBase64String(privateKeyParam.Q.ToByteArrayUnsigned()),
13           Convert.ToBase64String(privateKeyParam.DP.ToByteArrayUnsigned()),
14           Convert.ToBase64String(privateKeyParam.DQ.ToByteArrayUnsigned()),
15           Convert.ToBase64String(privateKeyParam.QInv.ToByteArrayUnsigned()),
16           Convert.ToBase64String(privateKeyParam.Exponent.ToByteArrayUnsigned()));
17           //privateKey 为C# .net 格式使用的应用私钥 
18           rsa.FromXmlString(privateKey);
19           // data 为参数数据 
20           byte[] signBytes = rsa.SignData(Encoding.UTF8.GetBytes(data), CryptoConfig.CreateFromName("SHA256")); // 得到 Base64 编码格式签名值,即接口请求参数中的 sign 值 
21           result = Convert.ToBase64String(signBytes);
22 
23           return result;
24       }

 

posted on 2021-09-22 15:59  梦想&现实  阅读(872)  评论(0编辑  收藏  举报