MD5实用程序

  MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在UNIX下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如:

  MD5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461

   WEB上的密码我们可以采用MD5这种方式隐藏密码:

    

package com.teamax.common.uitl;

/**
 * MD5 程序
 * 
 * 作者(修改):邱志清
 * 时间: 2009年9月16日
 * 
 * 
 */

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Builder {

 // 用来将字节转换成 16 进制表示的字符
 static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
   '9', 'a', 'b', 'c', 'd', 'e', 'f' };

 /**
  * 把byte[]数组转换成十六进制字符串表示形式
  * 
  * @param tmp
  *            要转换的byte[]
  * @return 十六进制字符串表示形式
  */
 private static String byteToHexString(byte[] tmp) {
  String s;
  // 用字节表示就是 16 个字节
  char str[] = new char[16 * 2]; // 每个字节用 16 进制表示的话,使用两个字符,
  // 所以表示成 16 进制需要 32 个字符
  int k = 0; // 表示转换结果中对应的字符位置

  for (int i = 0; i < 16; i++) { // 从第一个字节开始,对 MD5 的每一个字节
   // 转换成 16 进制字符的转换
   byte byte0 = tmp[i]; // 取第 i 个字节
   str[k++] = hexDigits[byte0 >>> 4 & 0xf]; // 取字节中高 4 位的数字转换,
   // >>> 为逻辑右移,将符号位一起右移
   str[k++] = hexDigits[byte0 & 0xf]; // 取字节中低 4 位的数字转换
  }
  s = new String(str); // 换后的结果转换为字符串

  return s;
 }

 /** */
 /**
  * 对一段String生成MD5加密信息
  * 
  * @param message
  *            要加密的String
  * @return 生成的MD5信息
  * 
  */
 public static String getMD5(String message) {

  try {
   MessageDigest md = MessageDigest.getInstance("MD5");
   byte[] b = md.digest(message.getBytes());
   return byteToHexString(b);
  } catch (NoSuchAlgorithmException e) {
   e.printStackTrace();
   return null;
  }

 }

 /**
  * 用测试
  */
 public static void main(String[] args) {
  String in = "qiuzhiqing";
  String out = MD5Builder.getMD5(in);
  System.out.println("输入字符串:" + in);
  System.out.println("输出字符串:" + out);
 }

}

你可能感兴趣的:(Web,unix,Security,软件测试,F#)