C#实现SHA256WithRSA加密用于Java的秘钥私钥

超、凢脫俗 2023-08-17 15:22 179阅读 0赞

首先要把Java秘钥进行转换,然后再进行加密

转制秘钥的方法

  1. public static string RSAPrivateKeyJava2DotNet(string privateKey)
  2. {
  3. RsaPrivateCrtKeyParameters privateKeyParam = (RsaPrivateCrtKeyParameters)PrivateKeyFactory.CreateKey(Convert.FromBase64String(privateKey));
  4. return string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent><P>{2}</P><Q>{3}</Q><DP>{4}</DP><DQ>{5}</DQ><InverseQ>{6}</InverseQ><D>{7}</D></RSAKeyValue>",
  5. Convert.ToBase64String(privateKeyParam.Modulus.ToByteArrayUnsigned()),
  6. Convert.ToBase64String(privateKeyParam.PublicExponent.ToByteArrayUnsigned()),
  7. Convert.ToBase64String(privateKeyParam.P.ToByteArrayUnsigned()),
  8. Convert.ToBase64String(privateKeyParam.Q.ToByteArrayUnsigned()),
  9. Convert.ToBase64String(privateKeyParam.DP.ToByteArrayUnsigned()),
  10. Convert.ToBase64String(privateKeyParam.DQ.ToByteArrayUnsigned()),
  11. Convert.ToBase64String(privateKeyParam.QInv.ToByteArrayUnsigned()),
  12. Convert.ToBase64String(privateKeyParam.Exponent.ToByteArrayUnsigned()));
  13. }

加密的方法

  1. public static string Sign(string contentForSign, string privateKey)
  2. {
  3. //转换成适用于.Net的秘钥
  4. var netKey = RSAPrivateKeyJava2DotNet(privateKey);
  5. var rsa = new RSACryptoServiceProvider();
  6. rsa.FromXmlString(netKey);
  7. //创建一个空对象
  8. var rsaClear = new RSACryptoServiceProvider();
  9. var paras = rsa.ExportParameters(true);
  10. rsaClear.ImportParameters(paras);
  11. //签名返回
  12. using (var sha256 = new SHA256CryptoServiceProvider())
  13. {
  14. var signData = rsa.SignData(Encoding.UTF8.GetBytes(contentForSign), sha256);
  15. return BytesToHex(signData);
  16. }
  17. }
  18. public static string BytesToHex(byte[] data)
  19. {
  20. StringBuilder sbRet = new StringBuilder(data.Length * 2);
  21. for (int i = 0; i < data.Length; i++)
  22. {
  23. sbRet.Append(Convert.ToString(data[i], 16).PadLeft(2, '0'));
  24. }
  25. return sbRet.ToString();
  26. }

调用:

  1. string rsaSecret = @"MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAjdAhDuqzKCzaYyrrxFLdWVoR7wwmSdbVHBSZ/lpILvN/vPaohbi0NChwAEXYbvIXrFQ7zQyuqKazoEbvvXRNKQ.......";
  2. string signDataString = Sign("Hello World!", rsaSecret);

转载于:https://www.cnblogs.com/bzmy/p/11504413.html

发表评论

表情:
评论列表 (有 0 条评论,179人围观)

还没有评论,来说两句吧...

相关阅读