package org.quickbundle.tools.support.encrypt; import java.security.MessageDigest; import org.quickbundle.config.RmBaseConfig; public final class Md5Token { private static char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; private static Md5Token instance = new Md5Token(); public synchronized static Md5Token getInstance() { return instance; } public String getShortToken(String arg0) { return encoder(arg0).substring(8,24); } public String getLongToken(String arg0) { return encoder(arg0).toString(); } private StringBuffer encoder(String arg){ if(arg==null){ arg=""; } MessageDigest md5 = null; try { md5=MessageDigest.getInstance("MD5"); md5.update(arg.getBytes(RmBaseConfig.getSingleton().getDefaultEncode())); } catch (Exception e) { e.printStackTrace(); } return toHex(md5.digest()); } private StringBuffer toHex(byte[] bytes) { StringBuffer str = new StringBuffer(32); int length=bytes.length; for (int i = 0; i < length; i++) { str.append(hexDigits[(bytes[i] & 0xf0) >> 4]); str.append(hexDigits[bytes[i] & 0x0f]); } bytes=null; return str; } public static void main(String a[]){ System.out.println(Md5Token.getInstance().getLongToken(Md5Token.getInstance().getLongToken("123456"))); } }