Java实现MD5加密的方法

 更新时间:2015年07月24日 10:27:43   作者:fzhlee  
这篇文章主要介绍了Java实现MD5加密的方法,实例分析了基于java实现md5加密的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了Java实现MD5加密的方法。分享给大家供大家参考。具体实现方法如下:

import java.security.MessageDigest; 
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加密算法是不可逆的,破解的难度很高,虽然有人破解了md5,但是他们所用的硬件环境不是我们普通的计算机所比拟的,山大的一位很牛的女教授也破解了md5,不过不怎么了解

希望本文所述对大家的java程序设计有所帮助。

相关文章

  • 使用Spring AOP实现用户操作日志功能

    使用Spring AOP实现用户操作日志功能

    这篇文章主要介绍了使用Spring AOP实现了用户操作日志功能,功能实现需要一张记录日志的log表,结合示例代码给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 关于Logback+MyBatis日志输出问题的一些思考

    关于Logback+MyBatis日志输出问题的一些思考

    这篇文章主要介绍了关于Logback+MyBatis日志输出问题的一些思考,具有很好的参考价值,希望对大家有所帮助,
    2023-09-09
  • java中重写父类方法加不加@Override详解

    java中重写父类方法加不加@Override详解

    这篇文章主要介绍了java中重写父类方法加不加@Override详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • java面向国际化项目开发需遵循的命名规范

    java面向国际化项目开发需遵循的命名规范

    这篇文章主要为大家介绍了在参与开发国际化项目时需遵循的java命名规范,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • Mybatis批量删除数据操作方法

    Mybatis批量删除数据操作方法

    MyBatis的作用我想不用多说,今天说说MyBatis中的批量删除操作。 非常不错,感兴趣的朋友一起看看吧
    2016-09-09
  • Jenkins与SVN持续集成的示例代码

    Jenkins与SVN持续集成的示例代码

    这篇文章主要介绍了Jenkins与SVN持续集成的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Java实现单例模式之饿汉式、懒汉式、枚举式

    Java实现单例模式之饿汉式、懒汉式、枚举式

    本篇文章主要介绍了Java实现单例的3种普遍的模式,饿汉式、懒汉式、枚举式。具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-10-10
  • springboot 集成cas5.3 实现sso单点登录详细流程

    springboot 集成cas5.3 实现sso单点登录详细流程

    SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。单点登录是目前比较流行的企业业务整合的解决方案之一,本文给大家介绍springboot 集成cas5.3 实现sso单点登录功能,感兴趣的朋友一起看看吧
    2021-10-10
  • Java NIO实现聊天功能

    Java NIO实现聊天功能

    这篇文章主要为大家详细介绍了Java NIO实现聊天功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Java实现验证码验证功能

    Java实现验证码验证功能

    Java如何实现验证码验证功能呢?日常生活中,验证码随处可见,他可以在一定程度上保护账号安全,那么他是怎么实现的呢?今天通过本文给大家实例详解,需要的朋友参考下
    2017-02-02

最新评论