Flutter 接口签名MD5加密

第一步 更新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); 

非常感谢大神的帮忙。

posted on 2019-09-11 15:01  JoeYoung  阅读(2874)  评论(0编辑  收藏  举报