【问题标题】:comparing md5 hashing in android(java) and c#比较 android(java) 和 c# 中的 md5 哈希
【发布时间】:2011-02-15 00:07:26
【问题描述】:

我同时在 android 和 c# 中进行 md-5 散列。但是对于相同的输入,两个结果应该是相同的。两种语言的处理方式有什么不同吗?

在这两种情况下我得到不同的输出。这是md-5计算的c#代码:

//this method hashes the values sent to it using MD5
public static String hashwithmd5(String toHashMD5)
{
    byte[] keyArray;

    MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
    keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(toHashMD5));
    hashmd5.Clear();
    return Convert.ToBase64String(keyArray, 0, keyArray.Length); 
}

这是在android中使用bouncycastle的md5代码

public byte[] Hashing(String toHash) throws Exception{
    byte[] hashBytes = toHash.getBytes("UTF-8");
    EditText et = (EditText) findViewById(R.id.entry);
    org.bouncycastle.crypto.digests.MD5Digest digest = new org.bouncycastle.crypto.digests.MD5Digest();
    digest.reset();
    digest.update(hashBytes, 0, hashBytes.length);
    int length = digest.getDigestSize();
    byte[] md5 = new byte[length];
    digest.doFinal(md5, 0);
    et.setText(md5.toString());
    return md5;
}

c#中md5的结果是:XUFAKrxLKna5cZ2REBfFkg==

android中md5的结果是:[B@4053cf40

【问题讨论】:

  • 谁能告诉我这两种计算有什么不同,以及我应该如何改变它以获得相同的 o/p?
  • 如果你比较字节数组呢?它们是一样的吗?
  • @cris 你能得到解决方案吗?"

标签: c# android hash md5


【解决方案1】:

C# 代码将哈希转换为 Base64,Java 代码没有。如果您将两个原始哈希都转换为例如十六进制字符串,它们将是相同的。

【讨论】:

    【解决方案2】:

    当你在 Java 中使用它时:

    byte[] md5 = new byte[length];
    // ...
    md5.toString()
    

    没有得到字节值的表示。你得到一个对象的通用“字符串表示”。在这里,[B@4053cf40 基本上意味着“内部恰好位于地址 4053cf40 的字节数组(用于 '[B')”。

    使用 android.util.Base64 将您的字节转换为 Base64 编码的字符串。

    【讨论】:

    • 你能告诉我这个库 android.util.Base64 如何用于将字节数组转换为 base64 字符串的示例吗?
    【解决方案3】:

    @erik 是正确的。 MD5 不再被视为“安全”哈希;使用 SHA-256。

    【讨论】:

      【解决方案4】:

      埃里克是绝对正确的。 MD5 的使用已接近灭绝,请使用任何强 SHA

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-19
        相关资源
        最近更新 更多