md5加密- java与python的区别

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