【发布时间】:2012-01-31 19:30:02
【问题描述】:
我正在使用 md5 将我的帖子保护到运行 PHP 的后端服务器。 参数通过 HTTP Post 发送。
我有一个问题,如果输入参数之一中有 ü、ä 或 ö,我的 md5 计算结果在 Android 和 PHP 服务器上是不同的。
在 Android 上,哈希是通过这个函数计算的:
public static final String md5(final String s) {
try {
// Create MD5 Hash
MessageDigest digest = java.security.MessageDigest
.getInstance("MD5");
digest.update(s.getBytes());
byte messageDigest[] = digest.digest();
// Create Hex String
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < messageDigest.length; i++) {
String h = Integer.toHexString(0xFF & messageDigest[i]);
while (h.length() < 2)
h = "0" + h;
hexString.append(h);
}
return hexString.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
在我简单使用的 PHP 服务器上
md5() function.
【问题讨论】:
-
听起来像是编码问题(例如 ISO-8859-1 与 UTF-8)。你用的是什么字符集?你能显示一些代码吗?
-
顺便说一句,您可能想使用 SHA1 或其他算法来保护您的帖子... MD% 不再安全
-
请检查这个[链接](stackoverflow.com/questions/5494447/…)
-
@sivakg2000,OP 已经这样做了。
-
@STT LCU 在这种情况下尚不清楚哈希如何保护任何东西。 Op 对他试图防御的攻击场景只字未提。无论如何,除非存在向后兼容性问题,否则不应在新开发中使用 SHA1,而这似乎根本不是这种情况。 MD5 几乎永远不会被使用。
标签: php android md5 diacritics