java 实现MD5加密算法的简单实例

 更新时间:2017年09月03日 11:06:35   投稿:lqh  
这篇文章主要介绍了java 实现MD5加密算法的简单实例的相关资料,这里提供实例帮助大家应用这样的加密算法,需要的朋友可以参考下

java 实现MD5加密算法的简单实例

实现代码:

import java.security.NoSuchAlgorithmException;  
 
public class MD5HashUtil  
{  
private MessageDigest md = null;  
private static MD5HashUtil md5 = null;  
private static final char[] hexChars ={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};  
 
  /** 
  * Constructor is private so you must use the getInstance method 
  */  
  private MD5HashUtil() throws NoSuchAlgorithmException  
  {  
   md = MessageDigest.getInstance("MD5");  
  }  
  /** 
  * This returns the singleton instance 
  */  
 public static MD5HashUtil getInstance()throws NoSuchAlgorithmException  
  {  
    if (md5 == null)  
    {  
     md5 = new MD5HashUtil();  
   }  
   return (md5);  
  }  
 public static String hashCode(String dataToHash) throws NoSuchAlgorithmException{  
 return getInstance().hashData(dataToHash.getBytes());  
 }  
 public static String hashCode(byte[] dataToHash) throws NoSuchAlgorithmException{  
 return getInstance().hashData(dataToHash);  
 }  
public String hashData(byte[] dataToHash) {  
   return hexStringFromBytes((calculateHash(dataToHash))).toLowerCase();  
}  
private byte[] calculateHash(byte[] dataToHash)  
{  
   md.update(dataToHash, 0, dataToHash.length);  
   return (md.digest());  
 }  
public String hexStringFromBytes(byte[] b)  
{  
  String hex = "";  
  int msb;  
  int lsb = 0;  
  int i;  
  // MSB maps to idx 0  
  for (i = 0; i < b.length; i++)  
  {  
   msb = ((int)b[i] & 0x000000FF) / 16;  
   lsb = ((int)b[i] & 0x000000FF) % 16;  
    hex = hex + hexChars[msb] + hexChars[lsb];  
   }  
   return(hex);  
  }  
 
public static void main(String args[]) throws NoSuchAlgorithmException  
{  
String string = "my name is zhangli";  
System.out.println(string);  
System.out.println(hashCode(string));  
}  
}  

 如上代码为java语言实现md5加密算法,输出为加密后的密文!

通常将加密后的密文保存在数据库中,如果需要比较只比较他们的用md5加密过后的密文。

同时,md5加密算法是不可逆的,破解的难度很高。

以上就是java MD5加密算法的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • java内部类的最详细详解

    java内部类的最详细详解

    内部类是指在一个外部类的内部再定义一个类,下面这篇文章主要给大家介绍了关于java内部类的最详细详解,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Hibernate中的多表查询及抓取策略

    Hibernate中的多表查询及抓取策略

    本文主要介绍了Hibernate中的多表查询及抓取策略,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • Spring基于ProxyFactoryBean创建AOP代理

    Spring基于ProxyFactoryBean创建AOP代理

    这篇文章主要介绍了Spring基于ProxyFactoryBean创建AOP代理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Intellij IDEA基于Springboot的远程调试(图文)

    Intellij IDEA基于Springboot的远程调试(图文)

    这篇文章主要介绍了Intellij IDEA基于Springboot的远程调试(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Java实例化一个抽象类对象的方法教程

    Java实例化一个抽象类对象的方法教程

    大家都知道抽象类无法实例化,就无法创建对象。所以下面这篇文章主要给大家介绍了关于Java实例化一个抽象类对象的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-12-12
  • JVM的垃圾回收算法工作原理详解

    JVM的垃圾回收算法工作原理详解

    这篇文章主要介绍了JVM的垃圾回收算如何判断对象是否可以被回收,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • Spring Security实现自动登陆功能示例

    Spring Security实现自动登陆功能示例

    自动登录在很多网站和APP上都能用的到,解决了用户每次输入账号密码的麻烦。本文就使用Spring Security实现自动登陆功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Java实现的时间戳与date对象相互转换功能示例

    Java实现的时间戳与date对象相互转换功能示例

    这篇文章主要介绍了Java实现的时间戳与date对象相互转换功能,结合具体实例形式分析了java日期与时间戳类型的表示与转换相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • Java程序控制逻辑—流程控制

    Java程序控制逻辑—流程控制

    这篇文章主要介绍了Java程序的控制逻辑流程控制,流程控制中最基本的就是条件执行,也就是说,一些操作只能在某些条件满足的情况下才执行,在一些条件下执行某种操作,在另外一些条件下执行另外的操作,需要的朋友可以参考一下
    2022-01-01
  • 基于@GetMapping注解携带参数的方式

    基于@GetMapping注解携带参数的方式

    这篇文章主要介绍了基于@GetMapping注解携带参数的方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05

最新评论