SignatureHelper.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Security.Cryptography;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace Ropin.Inspection.Api.Wx
  8. {
  9. public static class SignatureHelper
  10. {
  11. public static bool Check(SignatureModel signatureModel)
  12. {
  13. List<string> temp = new List<string>() { signatureModel.Timestamp, signatureModel.Nonce, signatureModel.Token };
  14. temp.Sort();
  15. string str = "";
  16. foreach (string item in temp)
  17. {
  18. str += item;
  19. }
  20. StringBuilder sha1Str = new StringBuilder();
  21. using (SHA1 sha = new SHA1CryptoServiceProvider())
  22. {
  23. var _byte = sha.ComputeHash(Encoding.UTF8.GetBytes(str));
  24. foreach (byte b in _byte)
  25. {
  26. sha1Str.AppendFormat("{0:x2}", b);
  27. }
  28. }
  29. return sha1Str.ToString().Equals(signatureModel.Signature);
  30. }
  31. }
  32. }