crypto_utils.dart 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import 'dart:convert';
  2. import 'package:crypto/crypto.dart' as crypto;
  3. /// 加密工具类
  4. /// 对应 Web 端 ts-md5 库的 Md5.hashStr() 方法
  5. class CryptoUtils {
  6. CryptoUtils._();
  7. /// MD5 加密
  8. ///
  9. /// 对应 Web 端 ts-md5 库的 `Md5.hashStr(input)` 方法
  10. /// 使用 UTF-8 编码,返回小写十六进制字符串
  11. ///
  12. /// [input] 要加密的字符串
  13. /// 返回 MD5 加密后的十六进制字符串(小写,32 位)
  14. ///
  15. /// 示例:
  16. /// ```dart
  17. /// CryptoUtils.md5('password') // 返回 '5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8'
  18. /// ```
  19. static String md5(String input) {
  20. // 使用 UTF-8 编码,与 ts-md5 的 hashStr 方法一致
  21. // ts-md5 的 hashStr 方法使用 UTF-8 编码处理字符串
  22. final bytes = utf8.encode(input);
  23. final digest = crypto.md5.convert(bytes);
  24. // 返回小写十六进制字符串,与 ts-md5 的 hashStr 返回格式一致
  25. // ts-md5 的 hashStr 返回的是小写十六进制字符串
  26. return digest.toString();
  27. }
  28. /// SHA256 加密
  29. ///
  30. /// [input] 要加密的字符串
  31. /// 返回 SHA256 加密后的十六进制字符串(小写)
  32. static String sha256(String input) {
  33. final bytes = utf8.encode(input);
  34. final digest = crypto.sha256.convert(bytes);
  35. return digest.toString();
  36. }
  37. /// SHA1 加密
  38. ///
  39. /// [input] 要加密的字符串
  40. /// 返回 SHA1 加密后的十六进制字符串(小写)
  41. static String sha1(String input) {
  42. final bytes = utf8.encode(input);
  43. final digest = crypto.sha1.convert(bytes);
  44. return digest.toString();
  45. }
  46. }