MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),
一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致
特性 :防止反推
附上代码 仔细研究一下代码 瞬间就懂MD5了
import sun.misc.BASE64Encoder;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.security.MessageDigest; //安全密码 包
import java.security.NoSuchAlgorithmException;
/**
* Created by Kingkang on 2019/7/9.
*/
public class MD5Util {
//加密字符串
public String EncoderByMd5(String zifuchuan){
//确定计算方法
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5"); //SHA
BASE64Encoder base64en = new BASE64Encoder(); //加密内容 的字节
byte[] bytes = zifuchuan.getBytes("utf-8"); //加密后的字节
System.out.println("utf-8转化 字节:"+bytes);
byte[] digest = md5.digest(bytes); //放里面 加密
System.out.println("md5加密后 字节为:"+digest);
String encode = base64en.encode(digest);//将 加密字节 转为 字符串
System.out.println("64字节转字符串:"+encode);
return encode;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
//MD5 加密mysql账号密码算法 String
public String mysqlMd5(String content){
byte[] secretByte;
try {
secretByte = MessageDigest.getInstance("md5").digest(content.getBytes());
System.out.println("md5加密sql:"+secretByte
);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("找不到md5算法");
}
StringBuilder stringbuid = new StringBuilder(new BigInteger(1, secretByte).toString(16));
for (int i = 0; i < 32 - stringbuid.length(); i++) {
stringbuid.insert(0, "0");
}
System.out.println("md5加密sql:"+stringbuid.toString());
return stringbuid.toString();
}
//测试
public static void main(String[] args) {
//字符串加密
System.out.println("加密开始");
MD5Util md5Util = new MD5Util();
md5Util.EncoderByMd5("123");
System.out.println("加密结束");
//开启mql 加密
System.out.println("mysql加密开始:");
String s = md5Util.mysqlMd5("123");
if("202cb962ac59075b964b07152d234b70".equals(s)){
System.out.println("真");
}else{
System.out.println("假");
}
System.out.println("结束");
}
}
运行结果展示
加密开始
utf-8转化 字节:[B@2328c243
md5加密后 字节为:[B@bebdb06
64字节转字符串:ICy5YqxZB1uWSwcVLSNLcA==
加密结束
mysql加密开始:
md5加密sql:[B@7a4f0f29
md5加密sql:202cb962ac59075b964b07152d234b70
真
结束
----------------------------------------------------
个人感觉 : 但是任何事情没绝对的 使用枚举容易耦合密码