2012-04-06 3 views
3

나는 데이터베이스에서 사용자의 암호를 암호화하기 위해 md5를 사용하고 있으며 전자 메일을 보내서 잊어 버렸을 때 암호를 다시 가져 오라고합니다. 문제는 PHP 코드를 다시 작성하는 방법을 모르겠다는 것입니다.MD5에서 암호를 복구하는 방법은 무엇입니까?

답변이나 적절한 링크는 대단히 감사하겠습니다. 감사합니다 ..

+9

해시, 암호화하지 않기 때문에 해시를 사용하는 것이 중요하지 않습니다. 표준적인 방법은 URL을 보내어 새 비밀번호를 설정하는 것입니다. –

+0

암호를 복구 할 수 있도록하려면 먼저 암호를 해시하는 이유는 무엇입니까? (참고 : 암호 해싱을 제안하지 않습니다.) – JJJ

+0

@ 대각선, 당신이 그 질문에 대답을하면 투표 할 것이고 그 이유에 대해서는 더 설명 할 것입니다 –

답변

10

1

MD5는 hashing function 아닌 암호화 기능입니다 수행 할 수 없습니다. 일방 통행 절차이며 되돌릴 수 없습니다. 사실

1,이 많은 같은 암호 해시 때 같은 MD5 값 발생합니다 (입력)이 있지만, 그것은 단지 과를 찾기 위해 "하드"의 [일반적으로] 불가능 찾을 수 원래 하나. 이것은 암호를 "해독"하는 것입니다. 해시시 특정 출력을 생성하는 입력을 찾습니다. (그리고이 길을 따라 더 이상 도움을주지 않을 것입니다.)

0

Rainbow tables이 관심의 대상 일 수 있습니다.
원래 암호를 해시에서 복구 할 수는 없지만 무지개 표를 사용하면 필요한만큼 동일한 해시를 생성 할 문자열을 찾을 수 있습니다.

+0

책임을 맡고있는 사이트를 알려주십시오. 그래서 피할 수 있습니다. –

+0

http://gmail.com –

2

MD5는 해시 함수이므로 절대로 해시 된 암호를 복구하려고 시도하면 안됩니다. 일반적인 방법은 해시 된 암호를 지우고 전자 메일의 링크에서 새 암호를 설정하도록하는 것입니다. 해시 된 패스워드를 전달한 다음, 해쉬 된 패스워드를 역으로 해독하는 것은 심각한 보안 허점이다.

6

언급 한대로 모든 해시 함수와 마찬가지로 MD5도 되돌릴 수 없습니다. 또한 많은 문자열이 동일한 문자열로 해시 될 수 있기 때문에 수행 할 수 있으며, 역순으로 다른 문자열을 얻을 수 있습니다.

운이 좋다면 레인보우 테이블에서 해시를 찾을 수 있습니다. http://www.md5rainbow.com/ 로그인해도 문제가되지 않지만 원본 문자열은 가져올 수 없지만 해시 문자열을 비교할 수는 있습니다.

원래 비밀번호를 보내는 대신 '비밀번호 재설정'을하고 싶을 것입니다.

2

이론적으로 이론적으로 사용자는 몇 가지 확인 후에 암호를 다시 설정하는 특수 링크를 보내려면 메일로 일반 텍스트 암호를 보내거나 사용자가 무절제를 썼음을 사용자에게 알리지 않아야합니다. 귀하의 시스템에서 사용할 수있는 암호 버전.

관련 문제