【问题标题】:Can I convert an ASCII MD5 hashed password into a Unicode MD5 hashed password?我可以将 ASCII MD5 哈希密码转换为 Unicode MD5 哈希密码吗?
【发布时间】:2011-02-11 23:58:10
【问题描述】:

我正在寻求将 ASCII MD5 散列密码转换为 Unicode MD5 散列密码的帮助?

例如,我将使用字符串“密码”。

当它转换为 ascii 字节数组时,我得到了 X03MO1qnZdYdgyfeuILPmQ== 的 base64 编码哈希 当它转换为 unicode 字节数组时,我得到 sIHb6F4ew//D1OfQInQAzQ==

的 base64 编码哈希

我所有的密码都存储在应用于 ascii 字节数组的 md5 哈希中,但我正在尝试将我的应用程序的用户数据迁移到将密码存储在应用 unicode 字节数组的 md5 哈希中的系统。

如果不清楚,使用以下C#代码:

var passwordBytes = Encoding.ASCII.GetBytes("password");
var hashAlgorithm = HashAlgorithm.Create("MD5");
var hashBytes = hashAlgorithm.ComputeHash(passwordBytes);

我当前的系统使用它,但我要迁移到的系统有不同的第一行。它使用 Encoding.Unicode.GetBytes。

有人知道如何转换我的密码吗?来自

X03MO1qnZdYdgyfeuILPmQ==

进入

sIHb6F4ew//D1OfQInQAzQ==

我猜答案是我不能......编码是在散列之前完成的,但我想我会询问 stackoverflow 的聪明人,看看是否有人有办法。

【问题讨论】:

    标签: c# encoding passwords md5


    【解决方案1】:

    你可以使用 UTF-8 吗?如果是这样,它可以解决您的问题,因为以 UTF-8 和 ASCII 编码的 Unicode 将具有相同的 MD5 哈希。 (假设当您提到 ASCII 时,您指的是低七位)。

    或者,您可以创建一个 unicode 哈希,检查它是否有效,以及它是否不尝试 ASCII 哈希。

    【讨论】:

      【解决方案2】:

      不,你不能。 md5 是一种单向操作,您不能从原始字符串的哈希中扣除任何内容。

      【讨论】:

        【解决方案3】:

        这并不能直接回答您的问题,但是解决您遇到的问题(迁移)的一种方法是在使用新系统进行散列之前将输入的密码转换为 ascii 字节数组。这有点小技巧,但它应该可以工作。可能会根据您的具体情况而工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-25
          • 1970-01-01
          • 2020-09-16
          • 1970-01-01
          • 2012-03-28
          • 2013-06-17
          • 1970-01-01
          • 2014-07-13
          相关资源
          最近更新 更多