首页 > 技术文章 > MD5加密

KFKang 2019-07-09 20:32 原文

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

结束

----------------------------------------------------

 

 

个人感觉 : 但是任何事情没绝对的 使用枚举容易耦合密码

 

推荐阅读