md5哈希混乱

2 c# iphone md5

我的公司在将密码存储到数据库之前使用以下算法来哈希密码:

    public static string Hash(string value)
    {
        byte[] valueBytes = new byte[value.Length * 2];

        Encoder encoder = Encoding.Unicode.GetEncoder();
        encoder.GetBytes(value.ToCharArray(), 0, value.Length, valueBytes, 0, true);

        MD5 md5 = new MD5CryptoServiceProvider();
        byte[] hashBytes = md5.ComputeHash(valueBytes);

        StringBuilder stringBuilder = new StringBuilder();

        for (int i = 0; i < hashBytes.Length; i++)
        {
            stringBuilder.Append(hashBytes[i].ToString("x2"));
        }

        return stringBuilder.ToString();
    }
Run Code Online (Sandbox Code Playgroud)

对我来说这听起来像是一个微不足道的md5哈希,但是当我尝试匹配密码(123456)时,算法给了我ce0bfd15059b68d67688884d7a3d3e8c,当我使用标准的md5哈希时,它给了我e10adc3949ba59abbe56e057f20f883e.

正在构建iOS版本的站点,并且用户需要登录,密码将在发送之前进行哈希处理.我告诉iOS团队使用标准的md5哈希,但当然它没有成功.

我无法取消密码并使用标准md5(当然)再次哈希,我不知道究竟是什么告诉iOS团队,以获得相同的哈希值.

有帮助吗?

SLa*_*aks 7

您需要在两端使用相同的编码(可能是UTF8).

如果你用你的代码替换

byte[] hashBytes = md5.ComputeHash(Encoding.UTF8.GetBytes("123456"));
Run Code Online (Sandbox Code Playgroud)

,你会得到的e10adc3949ba59abbe56e057f20f883e.