2010-12-15 2 views
0

암호화 된 비밀번호를 나중에 해독 할 수있는 데이터베이스 (MySQL)에 삽입하는 방법을 찾고 있습니다. 나는 연구를했는데 bcrypt가 암호를 저장하는 더 안전한 방법이 될 것이라고 결론을 내렸지 만 암호를 다시 얻을 수는 없으며 로그인해야 할 경우 암호를 알아야합니다. 그들의 시스템 (나는 IP 인증에 의존하고 싶지 않다).네이티브 PHP 및 PERL 내 암호화

http://php.net/manual/es/function.mcrypt-cbc.php에는 PHP와 PERL 모두에서 암호화 용 라이브러리를 사용하는 좋은 예가 있지만 PERL에는 추가 라이브러리가 필요하며 PHP는 특정 버전이어야합니다.

PERL 및 PHP에서 네이티브 라이브러리 (추가 라이브러리 없음)를 1 년 이상 사용하는 솔루션을 찾고 있습니다. PHP 5.3 함수 나 비슷한 것은 없습니다.

시스템에는 100 명 정도의 사용자 만 있으므로 누군가 데이터베이스에 액세스 할 위험이 크지 않지만 보호를 원한다. 필자가 필요하다면 PERL에 라이브러리를 추가 할 필요는 없지만 PHP 라이브러리를 사용하거나 PHP 버전 5.0 이상을 요구할 수는 없습니다.

+0

는 그냥 암호의 해시를 생성 할 수있는 옵션이 아닌가요? –

+0

내가 아는 유일한 실제 해시는 MD5입니다. 이는 다소 불안합니다. 나는 5 분 안에 금이 간 기회가 될 수있는 무언가를 갖고 싶습니다. – ParoX

답변

1

표준 해싱 기능 (예 : sha 버전)은 비밀번호를 다시 가져올 수 없다는 것을 의미하지만 이 아니므로 해당 시스템에 로그인 할 수 없다는 것을 의미합니다.

데이터베이스의 암호 해시를 알려진 암호 (예 : update user set password = sha1('password') 등)로 업데이트하고 로그인 한 다음 암호를 이전 해시로 다시 업데이트하십시오. 당신은 들어 왔고 그들의 암호는 원래대로 돌아 왔습니다.

암호화 및 암호 해독의 경우 서버의 키가 필요합니다. 손상된 경우 공격자가 키에 액세스 할 수 있으므로 암호를 해시하지 않을 경우 암호를 암호화되지 않은 상태로 둘 수 있습니다.

0

SHA256 또는 SHA512을 사용하여 암호를 해시합니다. 그것은 충분해야합니다. 이제 자신의 계정에 로그인 할 수 있도록 비밀번호를 알고 싶다고하셨습니다. 관리자는 으로 로그인하여 비밀번호를 알지 않고도 로그인 할 수 있어야합니다.

사용자로 로그인해야한다면 변경해야 할 것으로 생각하십니까? 관리자는 사용자로 로그인하지 않고도 사용자 데이터를 변경할 수 있어야합니다. ...

그래서 시스템 수정 만 할 수 있습니다.

+0

대부분은 동의합니다. 그러나 내 사용자는 이미 암호가 무엇인지 확인하고 전자 메일로 복구하는 기능에 익숙합니다. 토큰이있는 시스템을 사용하여 새로운 토큰을 만들 수는 있지만 패스워드를 가져 오는 데는 여러 가지 이점이 있습니다. – ParoX

+0

당신이 묻는 것을 안전하게 할 방법이 없다는 것을 명심하십시오; 암호를 검색 할 수 있으면 공격자가 암호를 검색 할 수도 있습니다. –