You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.4 KiB
86 lines
2.4 KiB
import 'dart:convert'; |
|
import 'package:steel_crypt/steel_crypt.dart'; |
|
import 'package:convert/convert.dart'; |
|
import 'package:crypto/crypto.dart'; |
|
|
|
class CaptchaUtil{ |
|
///aes加密 |
|
/// [key]AesCrypt加密key |
|
/// [content] 需要加密的内容字符串 |
|
static String aesEncode({String key, String content}) { |
|
var aesCrypt = AesCrypt( |
|
key: base64UrlEncode(key.codeUnits), padding: PaddingAES.pkcs7); |
|
return aesCrypt.ecb.encrypt(inp: content); |
|
} |
|
|
|
///aes解密 |
|
/// [key]aes解密key |
|
/// [content] 需要加密的内容字符串 |
|
static String aesDecode({String key, String content}) { |
|
var aesCrypt = AesCrypt( |
|
key: base64UrlEncode(key.codeUnits), padding: PaddingAES.pkcs7); |
|
return aesCrypt.ecb.decrypt(enc: content); |
|
} |
|
/// isEmpty. |
|
static bool isEmpty(Object value) { |
|
if (value == null) return true; |
|
if (value is String && value.isEmpty) { |
|
return true; |
|
} |
|
return false; |
|
} |
|
|
|
//list length == 0 || list == null |
|
static bool isListEmpty(Object value) { |
|
if (value == null) return true; |
|
if (value is List && value.length == 0) { |
|
return true; |
|
} |
|
return false; |
|
} |
|
|
|
static String jsonFormat(Map<dynamic, dynamic> map) { |
|
Map _map = Map<String, Object>.from(map); |
|
JsonEncoder encoder = JsonEncoder.withIndent(' '); |
|
return encoder.convert(_map); |
|
} |
|
|
|
|
|
static String generateMd5(String data){ |
|
var content = new Utf8Encoder().convert(data); |
|
var digest = md5.convert(content); |
|
return hex.encode(digest.bytes); |
|
} |
|
|
|
static signData(Object params, tokenStr) async { |
|
var time = new DateTime.now().millisecondsSinceEpoch; |
|
String token = tokenStr; |
|
Map<String, dynamic> reqData = new Map(); |
|
Map<String, dynamic> paramsObj = new Map(); |
|
paramsObj = params as Map<String, dynamic>; |
|
var arr = []; |
|
//将字典转成数组 |
|
paramsObj?.forEach((key, value) => arr.add(key)); |
|
//进行签名校验 |
|
Map cr = new Map(); |
|
cr['token'] = token; |
|
cr['time'] = time.toString(); |
|
cr['reqData'] = json.encode(paramsObj); |
|
var array = []; |
|
cr.forEach((key, value) => array.add(key)); |
|
array.sort(); |
|
var str = ''; |
|
for (var i = 0; i < array.length; i++) { |
|
var key = array[i]; |
|
var value = cr[key]; |
|
str += key + value; |
|
} |
|
|
|
reqData["time"] = time; |
|
reqData["token"] = token; |
|
reqData['reqData'] = params; |
|
reqData['sign'] = generateMd5(str); |
|
|
|
return reqData; |
|
} |
|
} |