import 'dart:convert'; import 'package:crypto/crypto.dart' as crypto; /// 加密工具类 /// 对应 Web 端 ts-md5 库的 Md5.hashStr() 方法 class CryptoUtils { CryptoUtils._(); /// MD5 加密 /// /// 对应 Web 端 ts-md5 库的 `Md5.hashStr(input)` 方法 /// 使用 UTF-8 编码,返回小写十六进制字符串 /// /// [input] 要加密的字符串 /// 返回 MD5 加密后的十六进制字符串(小写,32 位) /// /// 示例: /// ```dart /// CryptoUtils.md5('password') // 返回 '5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8' /// ``` static String md5(String input) { // 使用 UTF-8 编码,与 ts-md5 的 hashStr 方法一致 // ts-md5 的 hashStr 方法使用 UTF-8 编码处理字符串 final bytes = utf8.encode(input); final digest = crypto.md5.convert(bytes); // 返回小写十六进制字符串,与 ts-md5 的 hashStr 返回格式一致 // ts-md5 的 hashStr 返回的是小写十六进制字符串 return digest.toString(); } /// SHA256 加密 /// /// [input] 要加密的字符串 /// 返回 SHA256 加密后的十六进制字符串(小写) static String sha256(String input) { final bytes = utf8.encode(input); final digest = crypto.sha256.convert(bytes); return digest.toString(); } /// SHA1 加密 /// /// [input] 要加密的字符串 /// 返回 SHA1 加密后的十六进制字符串(小写) static String sha1(String input) { final bytes = utf8.encode(input); final digest = crypto.sha1.convert(bytes); return digest.toString(); } }