MD5 即:Message-Digest Algorithm 5 (信息-摘要算法),可以保证信息传输的一致,是一种常用的散列算法之一,也可以看做是哈希算法,它将数据运算为128-bits长度的值,用32位的十六进制数字表示。
md5加密用法:
String getStringFromEntryInternal(T entry) {
String s = getStringFromEntry(entry);
return StringUtil.signContent(s, getSalt());
}
/**
* salt在编码后的串里不可见
*
* @return
*/
public String getSalt() {
return StringUtil.EMPTY;
}
public class StringUtil {
public static final String EMPTY = "";
public static String signContent(String rawContent, String salt) {
String md5 = md5(rawContent + salt);
return rawContent + md5;
}
}
md5解密算法:
T getEntryFromStringInternal(String str) {
String raw = StringUtil.getRawContent(str, getSalt());
// System.out.println("getEntryFromStringInternal:" + str);
if (raw != null)
return getEntryFromString(raw);
else {
return null;
}
}
public static String getRawContent(String signedContent, String salt) { // rawContent这里作为一个输出参数
String rtn = null;
if (signedContent == null)
return null;
int len = signedContent.length();
if (len <= 32)
return null;
String md5 = signedContent.substring(len - 32);// 最后32位
// System.out.println("validateSignedContent.md5:" + md5);
rtn = signedContent.substring(0, len - 32);// 原始内容
// System.out.println("validateSignedContent.rtn:" + rtn);
if (md5.equalsIgnoreCase(md5(rtn + salt)))
return rtn;
return null;
}
测试:
public class TTTT {
public static void main(String[] args){
String sss="this id";
String mds55=StringUtil.signContent(sss, "");
System.out.println(mds55);
System.out.println(mds55.length());
String unmds55=StringUtil.getRawContent(mds55, "");
System.out.println(unmds55);
}
}
测试结果:
this id46a6f3c92d33264c365fbb495afbe7a6 39 this id