| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 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();
- }
- }
|