将明文通过MD5加密成密码。
1 将明文转成byte数组
2 每一个byte&0xff (1111 1111)
3 将&之后的结果用int接收,转成16进制
4 4位16进制前面加个0,补齐成8位16进制
5 拼接所有16进制数据
示例代码:
package com.itheima.mobilesafe.utils;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Utils {
/**
* md5
* @param password
* @return
*/
public static String md5Password(String password){
try {
//得到一个信息摘要器
MessageDigest digest =MessageDigest.getInstance("md5");
byte[] result = digest.digest(password.getBytes());
StringBuilder builder =new StringBuilder();
//把每一个byte与8个二进制位与运算-- byte & 0xff(1111 1111)
for(byte b : result){
int num = b & 0xff;
//转成十六进制
String str = Integer.toHexString(num);
//将4位的十六进制前面加个0,补齐成8位16进制
if(str.length() == 1){
builder.append("0");
}
builder.append(str);
}
return builder.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return "";
}
}
}