一般設計的系統用戶的密碼都是采用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包.