2010-04-25 3 views
1

ASCII MD5 해시 암호를 유니 코드 MD5 해시 암호로 변환하는 데 도움을 찾으십니까?ASCII MD5 해시 암호를 유니 코드 MD5 해시 암호로 변환 할 수 있습니까?

예를 들어, "password"문자열을 사용합니다.

가 아스키 바이트 배열로 변환 때이 유니 코드 바이트 배열로 변환 때, I는 X03MO1qnZdYdgyfeuILPmQ의 == 의베이스 64 부호화 된 해시를 얻을 I 얻을 sIHb6F4ew // D1OfQInQAzQ ==의베이스 64 부호화 된 해시

내 모든 암호는 ascii 바이트 배열에 적용된 md5 해시에 저장되어 있지만 유니 코드 바이트 배열이 적용된 md5 해시에 암호를 저장하는 시스템에 내 응용 프로그램의 사용자 데이터를 마이그레이션하려고합니다.

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

내 현재의 시스템이 사용,하지만 난에 이동하고있어 시스템이 다른 첫 번째 줄이 있습니다 경우

는 다음과 같은 C# 코드와 함께, 분명하지 않다. Encoding.Unicode.GetBytes를 사용합니다.

암호를 어떻게 변환 할 수 있습니까?

sIHb6F4ew//D1OfQInQAzQ== 

X03MO1qnZdYdgyfeuILPmQ== 

에서 나는 대답은 내가 .. 인코딩이 해시 전에 수행되고 수 없다는 것입니다 추측하고있어,하지만 난의 밝은 마음을 문의 거라고 생각 stackoverflow 누군가가 방법이 있는지보십시오.

답변

8

UTF-8을 사용할 수 있습니까? 그렇다면 유니 코드가 UTF-8로 인코딩되고 ASCII가 동일한 MD5 해시를 가질 때 문제를 해결합니다. (ASCII를 참조 할 때 하위 7 비트를 나타낼 것이라고 가정).

또는 유니 코드 해시를 만들어 작동하는지 확인하고 ASCII 해시를 시도하지 않을 수도 있습니다.

3

아니요, 불가능합니다. md5는 일방 통행 작업이므로 원래 문자열을 해시에서 제외 할 수 없습니다.

0

이 질문에 직접 대답하지는 않지만 새로운 시스템으로 해싱하기 전에 입력 된 암호를 ASCII 바이트 배열로 변환하는 것이 하나의 해결책입니다 (마이그레이션은). 이것은 약간의 해킹이지만, 가 작동해야합니다. 은 상황에 따라 다를 수 있습니다.

관련 문제