RSAHelper.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System;
  2. using System.Security.Cryptography;
  3. namespace SiteCore
  4. {
  5. public class RSAHelper
  6. {
  7. private const int RsaKeySize = 1024;
  8. private static string publicKey = "<RSAKeyValue><Modulus>wlvRUITlK450HUCZVIe8kJPWyYcDrecFYKGjDRxHvZnhm+7DJ41V9a8FEH3KLT9tGm8RAbL/gt8TZXAw5ymbe1Yoph1cjaDVyNxPrroUq13+jDjlYjxA089W91pwz7p7I4lnbD9mcSnI0aPNJlLAuCAkhF+48GR40iEBhr2GkHc=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
  9. private static string privateKey = "<RSAKeyValue><Modulus>wlvRUITlK450HUCZVIe8kJPWyYcDrecFYKGjDRxHvZnhm+7DJ41V9a8FEH3KLT9tGm8RAbL/gt8TZXAw5ymbe1Yoph1cjaDVyNxPrroUq13+jDjlYjxA089W91pwz7p7I4lnbD9mcSnI0aPNJlLAuCAkhF+48GR40iEBhr2GkHc=</Modulus><Exponent>AQAB</Exponent><P>6Eo9sSWHe4Lr16ZmVrGKYtXDO3kKlNuuLfdtjLtBLvYWBBoYjX1onKBr2+WAhNQc8zzU5riY1J5ZpBu20CkSQw==</P><Q>1jJtX6IfLDGIH0Li+BQyUif928/bK7Jp8rd/3Bt3QE+3N4OE7hKTGOYAQXHxBhLM/kfNsaQovT9A12FrytbHvQ==</Q><DP>4q7Ig13/V83Mf1cYWZPKW2cFrb0SUXAMCzmBQ6vdEYn+tCQPP8xZUTfP6fiOMZGZatk7XqhYJG0fR2HwRjU+Zw==</DP><DQ>U25K6eAlEjqs0bhk3cpIG3YWTGM29FtHJ1JQTDSqi3NBYy8oPO8hOqaD3Pn7rqjuDfF77kCJ2cTkhcAdk2F7ZQ==</DQ><InverseQ>4wA4X00g46Nh+w++A8g6PzVH8T23wC+SdXu+g+33FMidzP3Lf8HubUwFcQGQ5IrmBZQ5guyoraPpnXdH6ojYeA==</InverseQ><D>JlJoURIDBbWO232zPeGNoowj25SNeyqD+uuj9J/Q3WeL/mzzecb6XfjmbLwAsy9AWefwWH9stec6MdQPMGUZzL3FITj32xrgIZchu3mPFKuqBmNYMYtKUIs9gshqc5FWsO+hjO08SehkdxQt/Tkyjt7Ok3v1hx3rkOtH0V6lZTE=</D></RSAKeyValue>";
  10. /// <summary>
  11. /// 用给定路径的RSA公钥文件加密纯文本。
  12. /// </summary>
  13. /// <param name="plainText">要加密的文本</param>
  14. /// <param name="pathToPublicKey">用于加密的公钥路径.</param>
  15. /// <returns>表示加密数据的64位编码字符串.</returns>
  16. public static string Encrypt(string plainText)
  17. {
  18. using (var rsa = new RSACryptoServiceProvider(RsaKeySize))
  19. {
  20. try
  21. {
  22. //加载公钥
  23. rsa.FromXmlString(publicKey);
  24. var bytesToEncrypt = System.Text.Encoding.Unicode.GetBytes(plainText);
  25. var bytesEncrypted = rsa.Encrypt(bytesToEncrypt, false);
  26. return Convert.ToBase64String(bytesEncrypted);
  27. }
  28. finally
  29. {
  30. rsa.PersistKeyInCsp = false;
  31. }
  32. }
  33. }
  34. /// <summary>
  35. /// Decrypts encrypted text given a RSA private key file path.给定路径的RSA私钥文件解密 加密文本
  36. /// </summary>
  37. /// <param name="encryptedText">加密的密文</param>
  38. /// <param name="pathToPrivateKey">用于加密的私钥路径.</param>
  39. /// <returns>未加密数据的字符串</returns>
  40. public static string Decrypt(string encryptedText)
  41. {
  42. using (var rsa = new RSACryptoServiceProvider(RsaKeySize))
  43. {
  44. try
  45. {
  46. rsa.FromXmlString(privateKey);
  47. var bytesEncrypted = Convert.FromBase64String(encryptedText);
  48. var bytesPlainText = rsa.Decrypt(bytesEncrypted, false);
  49. return System.Text.Encoding.Unicode.GetString(bytesPlainText);
  50. }
  51. finally
  52. {
  53. rsa.PersistKeyInCsp = false;
  54. }
  55. }
  56. }
  57. }
  58. }