欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java实现MD5加密的方法

程序员文章站 2024-03-05 20:54:37
本文实例讲述了java实现md5加密的方法。分享给大家供大家参考。具体实现方法如下: import java.security.messagedigest;...

本文实例讲述了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程序设计有所帮助。