我可以将ASCII MD5哈希密码转换为Unicode MD5哈希密码吗?

1 c# passwords encoding md5

我正在寻找帮助将ASCII MD5哈希密码转换为Unicode MD5哈希密码?

例如,我将使用字符串"password".

当它转换为ascii字节数组时,我得到一个base64编码的散列X03MO1qnZdYdgyfeuILPmQ ==当它被转换为unicode字节数组时,我得到一个base64编码的散列sIHb6F4ew // D1OfQInQAzQ ==

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

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

var passwordBytes = Encoding.ASCII.GetBytes("password");
var hashAlgorithm = HashAlgorithm.Create("MD5");
var hashBytes = hashAlgorithm.ComputeHash(passwordBytes);
Run Code Online (Sandbox Code Playgroud)

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

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

X03MO1qnZdYdgyfeuILPmQ==
Run Code Online (Sandbox Code Playgroud)

sIHb6F4ew//D1OfQInQAzQ==
Run Code Online (Sandbox Code Playgroud)

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

Cla*_*ris 8

你能用UTF-8吗?如果是这样,它解决了您的问题,因为以UTF-8编码的Unicode和ASCII将具有相同的MD5哈希.(假设你引用ASCII时指的是低7位).

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