//struts2 源码public static final Random RANDOM= new Random();public static String generateGUID(){ return new BigInteger(165,RANDOM).toString(36).toUpperCase();}
另(其他):设计成单例模式,降低随机数出现的重复的概率
public String generateToken(){ String token = System.curentTimeMills()+new Random().nextInt()+""; MessageDigest md = MessageDigest.getInstance("md5"); byte[] md5 = md.digest(token.getBytes()); //不用 return new String(md5);的原因 ,new 一个String对象需要查码表,不写代表默认机器的码表,会产生乱码,java提供了一种解决方案base64编码 //base64有自己的码表(都是明文,键盘上能看见的字符) base64: 将3个字节的数据放入4个字节中,3*8=24,24/4=6,高位补两个0,这样编码之后所表示的数据范围是0~63(最小值00000000,最大值00111111) //base64编码
BASE64Encoder encoder = new BASE64Encoder(); rerurn encoder.encode(md5);}