Можно ли преобразовать хешированный пароль ASCII MD5 в хешированный пароль Unicode MD5? - PullRequest
1 голос
/ 25 апреля 2010

Мне нужна помощь для преобразования хешированного пароля ASCII MD5 в хешированный пароль Unicode MD5?

Например, я буду использовать строку «пароль».

Когда он конвертируется в байтовый массив ascii, я получаю хэш в кодировке base64 X03MO1qnZdYdgyfeuILPmQ == Когда он конвертируется в байтовый массив Unicode, я получаю хэш-код sIHb6F4ew в кодировке base64 // D1OfQInQAzQ ==

Все мои пароли хранятся в хеше md5, который был применен к байтовому массиву ascii, но я пытаюсь перенести пользовательские данные моего приложения в систему, которая хранит пароль в хеше md5, к которому применен байтовый массив юникода.

В случае, если неясно, с помощью следующего кода C #:

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

Моя текущая система использует это, но система, в которую я перехожу, имеет другую первую строку. Он использует Encoding.Unicode.GetBytes.

Кто-нибудь знает, как я могу конвертировать свои пароли? От

X03MO1qnZdYdgyfeuILPmQ==

в

sIHb6F4ew//D1OfQInQAzQ==

Я предполагаю, что ответ заключается в том, что я не могу ... кодирование выполняется до хеширования, но я подумал, что я поинтересуюсь умом стек-потока и посмотрим, есть ли у кого-нибудь способ.

Ответы [ 3 ]

8 голосов
/ 25 апреля 2010

Можете ли вы использовать UTF-8? Если это так, это решает вашу проблему, поскольку Unicode, закодированный в UTF-8 и ASCII, будет иметь тот же хэш MD5. (Предполагая, что когда вы ссылаетесь на ASCII, вы имеете в виду младшие семь битов).

В качестве альтернативы, вы можете создать Unicode-хэш, проверить, работает ли он, и не пытается ли он ASCII-хеш.

3 голосов
/ 25 апреля 2010

Нет, вы не можете. md5 - односторонняя операция, вы не можете вычесть что-либо из хэша, за исключением исходной строки.

0 голосов
/ 25 апреля 2010

Это не дает прямого ответа на ваш вопрос, но одно решение проблемы , которую вы испытываете (миграция), состоит в преобразовании введенных паролей в байтовый массив ascii перед хэшированием в новой системе. Это что-то вроде хака, но оно должно работать. может работать в зависимости от конкретной ситуации.

...