生成md5并输出16进制,统一java,python,dart之间的md5校验
java-spring
System.out.println(org.springframework.util.DigestUtils.md5DigestAsHex("asdf".getBytes()));
public abstract class DigestUtils {
//略...无关代码
private static final char[] HEX_CHARS = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
//生成md5 encode 为16进制,简称hex
private static char[] encodeHex(byte[] bytes) {
char[] chars = new char[32];
for(int i = 0; i < chars.length; i += 2) {
byte b = bytes[i / 2];
chars[i] = HEX_CHARS[b >>> 4 & 15]; //0xf0 = 15
chars[i + 1] = HEX_CHARS[b & 15];
}
return chars;
}
}
python
import hashlib
print hashlib.md5("asdf").hexdigest()
dart
import 'dart:convert';
import "package:crypto/crypto.dart";
var md = md5.convert(utf8.encode('asdf'));
print(md.toString());