No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

70 líneas
2.3 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.IO;
  5. using System.Security.Cryptography;
  6. namespace Com.Alipay
  7. {
  8. /// <summary>
  9. /// 类名:MD5
  10. /// 功能:MD5加密
  11. /// 版本:3.3
  12. /// 修改日期:2012-07-05
  13. /// 说明:
  14. /// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
  15. /// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
  16. /// </summary>
  17. public sealed class AlipayMD5
  18. {
  19. public AlipayMD5()
  20. {
  21. //
  22. // TODO: 在此处添加构造函数逻辑
  23. //
  24. }
  25. /// <summary>
  26. /// 签名字符串
  27. /// </summary>
  28. /// <param name="prestr">需要签名的字符串</param>
  29. /// <param name="key">密钥</param>
  30. /// <param name="_input_charset">编码格式</param>
  31. /// <returns>签名结果</returns>
  32. public static string Sign(string prestr, string key, string _input_charset)
  33. {
  34. StringBuilder sb = new StringBuilder(32);
  35. prestr = prestr + key;
  36. MD5 md5 = new MD5CryptoServiceProvider();
  37. byte[] t = md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(prestr));
  38. for (int i = 0; i < t.Length; i++)
  39. {
  40. sb.Append(t[i].ToString("x").PadLeft(2, '0'));
  41. }
  42. return sb.ToString();
  43. }
  44. /// <summary>
  45. /// 验证签名
  46. /// </summary>
  47. /// <param name="prestr">需要签名的字符串</param>
  48. /// <param name="sign">签名结果</param>
  49. /// <param name="key">密钥</param>
  50. /// <param name="_input_charset">编码格式</param>
  51. /// <returns>验证结果</returns>
  52. public static bool Verify(string prestr, string sign, string key, string _input_charset)
  53. {
  54. string mysign = Sign(prestr, key, _input_charset);
  55. if (mysign == sign)
  56. {
  57. return true;
  58. }
  59. else
  60. {
  61. return false;
  62. }
  63. }
  64. }
  65. }