2013-07-18 7 views
0

MySQL에 저장된 이메일 사용자 계정을 다른 서버로 전송하는 데 문제가 있습니다. 세부 사항은 다음과 같습니다.MySQL ENCRYPT 필드에서 MD5

사용자 계정 정보를 저장하기 위해 MySQL을 사용하는 이전 이메일 서버가 있습니다. 암호 필드는 MySQL ENCRYPT 기능을 사용하여 사용자 암호를 저장합니다. 나는 사용자의 암호를 변경하려면 그래서 나도 할 수있다 ". 2I6JOeg.JukJ"그럼

UPDATE `mail`.`users` SET `password` = ENCRYPT( '12345') WHERE CONVERT( `users`.`email` USING utf8) = '[email protected]' LIMIT 1 ; 

의 문자열로 테이블에 저장된 새 암호 "12345"

이제 iRedMail을 사용하여 새 서버를 구축합니다. 사용자 계정을 전송하려고 할 때 암호 필드를 전송하는 데 문제가 있습니다. iRadMail/dovecot은 MD5-CRAM을 사용하여 암호를 암호화하므로 MySQL에 저장하십시오. 모든 암호 문자열은 "$ 1 $"로 시작됩니다.

그래서 MySQL 암호로 암호화 된 문자열 "2I6JOeg.JukJ"을 만들 수 있습니까? MD5 해시 "$ 1 $ ................."로 변환 하시겠습니까? 도움을

감사합니다.

답변

1

먼저 MD5는 암호화 알고리즘이 아닌 해시 알고리즘입니다. 이 주된 이유는 MD5에서 생성 된 해시 값에서 원래 암호를 계산하는 것이 사실상 불가능하다는 것입니다. MD5는 해시 값을 생성하며 기본적으로 함정 기능을합니다. 즉, 일방향 함수입니다.

암호화를 사용하면 키를 알고있는 경우 암호화하고 해독 할 수 있습니다. 큰 차이. 당신이 그것을 이해하기를 바랍니다.

이제 문제가 생겼습니다.

암호화되기 전에 원래의 암호가 없다면 암호의 MD5에 해당하는 무력 이외에 합리적인 방법이 없습니다. 암호화 된 암호 해시 및 암호화되지 않은/일반 텍스트 암호 해시는 서로 다른 두 가지 생각입니다.

현재 일반 텍스트 형식으로 가지고있는 모든 암호를 해독 할 수 있으면 일반 텍스트 값에 MD5 해싱을 수행 할 수 있습니다. 원본 평문을 얻을 수 없다면 운이 없어집니다.