my blog my blog

Tag: md5
Java调用Apache commons codec实现md5加密

 

org.apache.commons.codec.digest
Class DigestUtils

java.lang.Object
  extended by org.apache.commons.codec.digest.DigestUtils

static String md5Hex(String data)
          Calculates the MD5 digest and returns the value as a 32 character hex string.

apache commons codec下载:http://commons.apache.org/proper/commons-codec/download_codec.cgi

实现方法:

  1. import org.apache.commons.codec.digest.*; 
  2.  
  3. public class md5another { 
  4.     public void md5create(String input) { 
  5.         System.out.print("32bit result:" + DigestUtils.md5Hex(input) + "\n"); 
  6.         System.out.print("16bit result:" 
  7.                 + DigestUtils.md5Hex(input).substring(824) + "\n"); 
  8.     } 
  9.  
  10.     public static void main(String[] args) { 
  11.  
  12.         md5another a = new md5another(); 
  13.         a.md5create("nenew"); 
  14.     } 

 

java编程md5实现方法

 

毕业设计要做一个论文在线管理系统,所以加密这块儿呢,必不可少的,首选还是md5,md5一次加密现在也都有库可查了,所以打算采用二次加密,昨天找了下资料,发现java有专门的类可以来实现,奶牛不是搞算法那块儿料,所以算法实现的就不要看了。下面来分析下。

java.security
Class MessageDigest

java.lang.Object
  extended by java.security.MessageDigestSpi
      extended by java.security.MessageDigest

具体使用到的方法有两个:

  1. 方法:getInstance(String algorithm) 
  2. 描述:Returns a MessageDigest object that implements the specified digest algorithm.
  3. algorithm的可以使用值有:DSA, SHA-1, MD5, DES, and DES3 
  4. 详情可以看:
  5. http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#ProviderImplReq 
  6. 返回值: static MessageDigest    
  7.  
  8. 方法:digest(byte[] input) 
  9. 描述:Performs a final update on the digest using the specified array of bytes
  10. then completes the digest computation. 
  11. 返回值: byte[]  

首先用getInstance("md5")方法来选择md5加密,然后用digest(byte[] input)来得到加密后的128位密文byte数组,而我们平时看到的md5密文是32位或者是16位的,因此需要转换。直接用digest(byte[] input)就可以免去使用update(byte[] input) 的那步了。

digest(byte[] input)返回的是16组8位二进制数,需要转换为2位十六进制数,然后依次转换可以得到32位的md5密文,截取32位密文的8~24位即为16位md5密文。

具体实现代码:

 

  1. import java.security.MessageDigest; 
  2. import java.security.NoSuchAlgorithmException; 
  3.  
  4. public class md5 { 
  5.     public String str; 
  6.  
  7.     public void md5create(String input) { 
  8.         try { 
  9.             MessageDigest md = MessageDigest.getInstance("MD5"); 
  10.             byte b[] = md.digest(input.getBytes()); 
  11.  
  12.             int i; 
  13.  
  14.             StringBuffer buf = new StringBuffer(""); 
  15.             for (int offset = 0; offset < b.length; offset++) { 
  16.                 i = b[offset]; 
  17.                 if (i < 0
  18.                     i += 256
  19.                 if (i < 16
  20.                     buf.append("0"); 
  21.                 buf.append(Integer.toHexString(i)); 
  22.  
  23.             } 
  24.             str = buf.toString(); 
  25.             System.out.println("32bit result: " + buf.toString());// 32位的加密 
  26.             System.out.println("16bit result: " 
  27.                     + buf.toString().substring(824));// 16位的加密 
  28.         } catch (NoSuchAlgorithmException e) { 
  29.             // TODO Auto-generated catch block 
  30.             e.printStackTrace(); 
  31.  
  32.         } 
  33.     } 
  34.  
  35.     public static void main(String agrs[]) { 
  36.         md5 md5object = new md5(); 
  37.         md5object.md5create("nenew");// 加密nenew 
  38.     } 
  39.  

 

MD5 SHA1 CRC32查询工具Hash下载

 

今天介绍款自己用着比较舒服windows下的的MD5 SHA1 CRC32一体都可查询的工具Hash,从网上下载东西,特别是官方公布的一些程序,往往都是用MD5验证的,hash这个工具就可以完成验证。

用法很简单,打开工具,把要查询的文件拖进去就可以了。

软件的下载地址:下载: MD5 SHA1 CRC32查询工具Hash.zip