python的md5加密
import hashlib name = '哈喽啊' obj = hashlib.md5() # md5加盐 obj.update('xxx'.encode('utf-8')) # md5加密 obj.update(name.encode('utf-8')) # 获取加密后的数据,以字节的形式展示, data = obj.digest() print(data) # b'\x1c\x7f\xd2\x051\x87\xb2\x88\xe7\xfc\xb9\x8e\xf9\x9a\x94\xe1' # 获取加密后的数据,以字符串的形式展示,本质是将 data 以16进制展示 res = obj.hexdigest() print(res) # 1c7fd2053187b288e7fcb98ef99a94e1
java的md5加密:
import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import java.util.Base64; public class Hello { public static void main(String[] args) throws NegativeArraySizeException { String name = 哈喽啊; try { MessageDigest instance = MessageDigest.getInstance(MD5); // md5的加盐 instance.update(xxx.getBytes()); // md5加密的字节数组 byte[] nameBytes = instance.digest(name.getBytes()); System.out.println(Arrays.toString(nameBytes));// 打印结果:[28, 127, -46, 5, 49, -121, -78, -120, -25, -4, -71, -114, -7, -102, -108, -31] String res = new String(nameBytes); System.out.println(res); //创建一个可变字符串 sb StringBuilder sb = new StringBuilder(); for (int i=0;i<nameBytes.length;i++){ int val = nameBytes[i] & 255; //将负数转换成整数 if (val < 16) { sb.append(0); } // 将val转换成16进制,再添加到sb这个可变的字符串中 sb.append(Integer.toHexString(val)); } //再将可变的字符串sb ,转换成不可变的字符串 String hexData = sb.toString(); System.out.println(hexData); // 打印结果:1c7fd2053187b288e7fcb98ef99a94e1 }catch (Exception e){ System.out.println(e); } } }