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程序设计有所帮助。

相关文章

  • JSONObject如何转为实体类对象

    JSONObject如何转为实体类对象

    介绍了JSONObject转为实体类对象的三种方法:JSONObject中的toJavaObject方法和getObject方法支持深转换,而JSON中的parseObject方法只能转换一层对象,此外,还补充说明了在对JSON转为实体类对象时,无论JSON中的数据字段是否多于或少于实体类中字段,转化都不会报错
    2024-11-11
  • Springboot使用jxls实现同sheet多个列表展示

    Springboot使用jxls实现同sheet多个列表展示

    这篇文章主要介绍了Springboot使用jxls实现同sheet多个列表展示,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • mybatis对象List<String> List<Integer>属性映射方式

    mybatis对象List<String> List<Integer>属性映射方式

    这篇文章主要介绍了mybatis对象List<String> List<Integer>属性映射方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Spring Boot 微信小程序接入微信支付功能

    Spring Boot 微信小程序接入微信支付功能

    本文详细介绍了使用SpringBoot框架接入微信支付的全流程,包括导入依赖、配置微信公众号信息、设置配置文件、编写支付相关实体类和API地址常量、实现支付服务以及Controller层的编写,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • java异常机制分析

    java异常机制分析

    这篇文章主要介绍了java异常机制,包括异常机制的捕获、抛出及常见的异常机制总结,需要的朋友可以参考下
    2014-09-09
  • Springboot集成Protobuf的流程步骤

    Springboot集成Protobuf的流程步骤

    在以往的项目中进行网络通信和数据交换的应用场景中,最经常使用的技术便是json或xml,但是今天在介绍一个Google的力作protobuf作为数据交换格式,文中给大家介绍了Springboot集成Protobuf的流程步骤,需要的朋友可以参考下
    2024-03-03
  • java8新特性 stream流的方式遍历集合和数组操作

    java8新特性 stream流的方式遍历集合和数组操作

    这篇文章主要介绍了java8新特性 stream流的方式遍历集合和数组操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 关于Springboot的日志配置

    关于Springboot的日志配置

    Spring Boot默认使用LogBack日志系统,如果不需要更改为其他日志系统如Log4j2等,则无需多余的配置,LogBack默认将日志打印到控制台上,需要的朋友可以参考下
    2023-05-05
  • SpringBoot项目集成Swagger和swagger-bootstrap-ui及常用注解解读

    SpringBoot项目集成Swagger和swagger-bootstrap-ui及常用注解解读

    这篇文章主要介绍了SpringBoot项目集成Swagger和swagger-bootstrap-ui及常用注解解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 5分钟搭建SpringCloud Eureka服务注册中心的实现

    5分钟搭建SpringCloud Eureka服务注册中心的实现

    这篇文章主要介绍了5分钟搭建SpringCloud Eureka服务注册中心的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03

最新评论