2010-04-25 5 views
1

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

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

Когда он преобразуется в массив байтов ASCII, я получаю base64 закодированный хеш X03MO1qnZdYdgyfeuILPmQ == Когда он преобразуется в массив байтов Юникода, я получаю в кодировке base64 хеш sIHb6F4ew // 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== 

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

ответ

8

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

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

3

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

0

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

Смежные вопросы