【发布时间】:2012-11-16 08:53:34
【问题描述】:
public String generateKey(String title, String userName){
char[] hexDigits = "0123456789abcdef".toCharArray();
String source;
String MD5 = null;
byte[] digest = null;
source = title + "balh" + userName ;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
digest = md.digest(source.getBytes("UTF-16"));
StringBuilder sb = new StringBuilder(32);
for (byte b : digest)
{
sb.append(hexDigits[(b >> 4) & 0x0f]);
sb.append(hexDigits[b & 0x0f]);
}
System.out.println("Gened KEY ===="+sb.toString());
return sb.toString();
} catch (Exception e) {
}
return "";
}
我使用相同的代码在 android 和 Servlet 中生成密钥。但我得到不同的结果。我究竟做错了什么?或者如果这些不兼容,那么如何制作它们。
【问题讨论】:
-
这可能与字节序有关...尝试使用
"UTF-16BE"或"UTF-16LE"(强制大字节序或小字节序字节排序)。 -
出于安全考虑,不要使用 md5,请使用 sha2 系列的成员或 sha3。