您的位置:首页 > 编程语言 > Java开发

说说如何使用 Java 原生方法实现 MD5 加密算法

2018-03-17 11:41 791 查看
Java 中提供了原生方法
MessageDigest.getInstance("MD5")
可以直接实现 MD5 算法,因为这个方法返回的是二进制数组,我们使用前还需要把二进制数组转换为十六进制的字符串:

/**
* MD5 算法
*
* @author Deniro Li (lisq037@163.com)
*         2018/3/17
*/
public class MD5 {

/**
* md5 加密
*
* @param s
* @return
*/
public static String encode(String s) {
try {
return toHex(MessageDigest.getInstance("MD5").digest(s.getBytes("UTF-8"))).toLowerCase();
} catch (Exception e) {
throw new RuntimeException("md5 加密", e);
}
}

/**
* 十六进制字符
*/
private static final char[] HEX_CHARS = "0123456789ABCDEF".toCharArray();

/**
* 转换为十六进制字符串
*
* @param bytes
* @return
*/
private static String toHex(byte[] bytes) {
StringBuilder str = new StringBuilder(bytes.length * 2);
final int fifteen = 0x0f;//十六进制中的 15
for (byte b : bytes) {//byte 为 32 位
str.append(HEX_CHARS[(b >> 4) & fifteen]);//获取第 25 位到第 28 位的二进制数
str.append(HEX_CHARS[b & fifteen]);//获取第 29 位到第 32 位的二进制数
}
return str.toString();
}
}


单元测试:

public class MD5Test {

@Test
public void encode(){
assertEquals("e10adc3949ba59abbe56e057f20f883e", MD5.encode("123456"));
}

}


是不是很简单呀O(∩_∩)O哈哈~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐