在手机客户端登录时,常用到令牌机制,以确保用户在登录时信息不被抓取,在java程序中,主要根据时间情况,进行MD5加密即可
package com.kevin.authtoken;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class TokenProcessor {
private static TokenProcessor instance = new TokenProcessor();
private long previous;
public TokenProcessor() {
}
public static TokenProcessor getInstance(){
return instance;
}
public synchronized String generateToken(String msg,boolean timeChange){
try{
long current = System.currentTimeMillis();
if(current == previous){
current++;
}
previous = current;
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(msg.getBytes());
if(timeChange){
byte now[] = (new Long(current)).toString().getBytes();
md.update(now);
}
return toHex(md.digest());
}
catch(NoSuchAlgorithmException e){
return null;
}
}
private String toHex(byte buffer[]){
StringBuffer sb = new StringBuffer(buffer.length * 2);
for(int i = 0; i < buffer.length;i++){
sb.append(Character.forDigit((buffer[i] & 240) >> 4, 16));
sb.append(Character.forDigit(buffer[i] & 15, 16));
}
return sb.toString();
}
//进行测试
public static void main(String args[]){
String token = new TokenProcessor().generateToken("vokey", false);
System.out.println(token);
}
}
这样即可