• 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); 

    非常感谢大神的帮忙。

  • 相关阅读:
    C#中yield return用法分析
    SQL表连接查询(inner join(join)、full join、left join、right join、cross join)
    SQL Server 数据类型转换函数
    linq查询结果指定列的两种方式
    html2cavans
    ORM
    Node.js Web 模块
    Node.js GET/POST请求
    Node.js 文件系统
    装逼利器函数注释
  • 原文地址:https://www.cnblogs.com/joe235/p/11506314.html
Copyright © 2020-2023  润新知