java中md5算法实例
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 id46a6f3c92d33264c365fbb495afbe7a639this id?
?
?