第一步 更新pubspec.yaml
crypto: ^2.1.1+1
第二步 先引入头文件:
import 'dart:convert'; import 'package:convert/convert.dart'; import 'package:crypto/crypto.dart';
直接上代码:
String getSign(Map parameter) { var Key = '密钥'; var timestamp = new DateTime.now().millisecondsSinceEpoch; var versionNumber = 'app-v1'; parameter['timestamp'] = timestamp.toString(); parameter['versionNumber'] = versionNumber; /// 存储所有key List<String> allKeys = []; parameter.forEach((key,value){ allKeys.add(key + value); }); /// key排序 allKeys.sort((obj1,obj2){ return obj1.compareTo(obj2); }); // /// 存储所有键值对 // List<String> pairs = []; // /// 添加键值对 // allKeys.forEach((key){ // pairs.add("$key${parameter[key]}"); // }); /// 数组转string String pairsString = allKeys.join(""); /// 拼接 ABC 是你的秘钥 String sign = Key + pairsString + Key; /// hash String signString = generateMd5(sign).toUpperCase(); //String signString = md5.convert(utf8.encode(sign)).toString().toUpperCase(); //直接写也可以 return signString; } /// md5加密 String generateMd5(String data) { var content = new Utf8Encoder().convert(data); var digest = md5.convert(content); // 这里其实就是 digest.toString() return hex.encode(digest.bytes); }
调用:
var formData = {'adCode': '000000'}; formData['sign'] = getSign(formData);
非常感谢大神的帮忙。