encoding - Blackberry 编码 MD5 与 C# 中的 MD5 不同

标签 encoding blackberry md5

我的密码在 C# 中以 MD5 编码并插入到我的数据库中。

MD5 MD5Hasher = MD5.Create();
byte[] PasswordHash = MD5Hasher.ComputeHash(Encoding.Unicode.GetBytes(PasswordText.Value));

PasswordHash 按原样插入,例如看起来像 0x09C09E5B52580E477514FA.......

在黑莓应用程序中,我获取密码,想要对其进行编码以将其传递给网络服务,该服务将比较两个散列密码。问题是我的结果与我在 Blackberry 应用程序中创建的 MD5 不同。

password = Crypto.encodeStringMD5(password);

然后在我的函数下面:

    public static String encodeStringMD5(String s) throws Exception {
    byte[] bytes = s.getBytes();
    MD5Digest digest = new MD5Digest();
    digest.update(bytes, 0, bytes.length);
    int length = digest.getDigestLength();
    byte[] md5 = new byte[length];
    digest.getDigest(md5, 0, true);
    return convertToHex(md5);
}

private static String convertToHex(byte[] data) {
    StringBuffer buf = new StringBuffer();
    for (int i = 0; i < data.length; i++) {
        int halfbyte = (data[i] >>> 4) & 0x0F;
        int two_halfs = 0;
        do {
            if ((0 <= halfbyte) && (halfbyte <= 9))
                buf.append((char) ('0' + halfbyte));
            else
                buf.append((char) ('a' + (halfbyte - 10)));
            halfbyte = data[i] & 0x0F;
        } while(two_halfs++ < 1);
    }
    return buf.toString();
}

所以它返回类似这样的内容:07054da3aea1cc98377fe0.........

知道如何获得与我在 Blackberry 中使用 C# 函数创建的相同的哈希密码吗?

谢谢!

最佳答案

getBytes() java的方法String返回与 Encoding.Unicode 不同的编码在.NET中。您需要指定明确的编码算法。在两个平台上使用 UTF-8 应该没问题。您还可以尝试向 Java 端的 getBytes 方法提供字符集名称;尝试getBytes("UTF-16")

关于encoding - Blackberry 编码 MD5 与 C# 中的 MD5 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3233287/

相关文章:

java - 为什么 Intellij IDEA 不显示𝔊符号?

blackberry - 在 BlackBerry 中的 VerticalFieldManager 中设置页眉和页脚

security - 非常简单的密码生成方案;这样安全吗?

java - Log4j编码问题

php - 显示来自用阿拉伯语编写的 mysql 的数据

Python:Got\xa0 而不是 CSV 中的空格,无法删除或转换

java - 黑莓中的图像浏览器

java - 从后台进程全局控制推送屏幕

java - 在 Python 2.7 中复制 Java 的 PBEWithMD5AndDES

c# - 如何在 C# 中针对 MySQL 打开 openssl passwd -1