【问题标题】:md5 with Android and PHPmd5 与 Android 和 PHP
【发布时间】: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


【解决方案1】:

看起来您需要在 PHP 中将 utf-8 编码字符串传递给 md5

md5(utf8_encode($string));

【讨论】:

    【解决方案2】:

    可能是您使用的是平台的默认字符集。

    请尝试:

    digest.update(s.getBytes("UTF-8");
    

    【讨论】:

    • 我已经用你的替换了我的 digest.update(),但我仍然有同样的问题。也许我必须在 PHP 上设置 UTF-8?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多