说说如何使用 Java 原生方法实现 MD5 加密算法
2018-03-17 11:41
791 查看
Java 中提供了原生方法
单元测试:
是不是很简单呀O(∩_∩)O哈哈~
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哈哈~
相关文章推荐
- 说说如何使用 Java 的原生方法实现 AES 算法
- java servlet 几种页面跳转的方法,需要的朋友可以参考一下 在访问网页的过程中,页面自动刷新、跳转和重定向是经常用到的,这里就说说在Java中是如何实现这些功能的! 一、页面自动刷新
- JAVA实现多线程的两种方法,及如何使用
- 使用java实现MD5、BASE64、RSA的方法
- 如何在Java中实现远程方法调用
- JAVA上加密算法的实现用例MD5/SHA1,DSA,DESede/DES,Diffie-Hellman的使用
- 如何使用Java操作文本文件的方法详解 (转)
- 如何在Java中实现远程方法调用
- 如何:使用回调方法实现异步 Web 服务客户端
- Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP(转)
- Java 有几程方法可以实现一个线程?用什么关键字修饰同步?stop()和suspend()为什么不推荐使用?
- 在Java中使用MessageDigest实现MD5,SHA-1等加密
- Effective Java Item3:使用私有构造方法或者枚举类型实现单例
- Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP
- 一个方法最多2个线程同时使用的JAVA实现
- JAVA使用XML作为持久存储介质实现方法
- 如何解决FormView中实现DropDownList连动选择时出现 "Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用" 的错误
- 请问在.net framework精简版,使用C#语言如何实现MD5和SHA1算法
- 如何使用java程序实现windows锁屏
- Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP