【问题标题】:Does MD5 conversions work different in Java and in Android?MD5 转换在 Java 和 Android 中的工作方式是否不同?
【发布时间】: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。

标签: android security md5


【解决方案1】:

我在服务器和安卓客户端都使用了以下方法。有效。但不知道我遇到了什么问题。

http://mobile.dzone.com/news/android-snippet-making-md5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 2023-02-01
    • 2022-01-13
    • 2012-05-06
    • 2013-08-25
    相关资源
    最近更新 更多