这是一个单例的延时加载实现:
public class Singleton {
static class SingletonHolder {
static Singleton instance = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.instance;
}
}
一般设计的系统用户的密码都是采用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包.