一般设计的系统用户的密码都是采用MD5摘要信息保存到数据库,但是现在网络有很多MD5库,如果你不做任何处理就直接使用MD5标准算法提取摘要,最后很有可能导致用户的密码不幸已经存在在现有MD5库中.所以一般使用以下策略来避免这种情况:使用一串随机字符串和明文组合成新密码,然后提取这个新的密码的MD5摘要作为摘要保存在数据库.
例码:
1 /**/ /* 
2 * Created on 2007-9-22
 3 */ 
4 package org.dueam.common.util;
 5 
6 import org.apache.commons.codec.digest.DigestUtils;
 7 
8 /** */ /** 
9 * @author <a href="windonly@gmail.com">Anemone</a>
 10 * hz,zj,china(2007-9-22)
 11 */ 
12 public abstract class MD5Utils  {
 {
 13 /** */ /** 
14 * 在明文之前增加随机字符串,来产生特殊MD5的摘要
 15 */ 
16 private final static String MD5_RANDOM = " FC2F056F1D8E4D59BD95AE15EED9C9C0 " ;
 17 /** */ /** 
18 * 提取密码摘要
 19 * @param password 密码明文
 20 * @return MD5摘要
 21 */ 
22 public static String encode(String password)  {
 {
 23 return DigestUtils.md5Hex(MD5_RANDOM + password);
 24 } 
25 
26 } 
27 
其中用到apache的codec包.