2011-04-19 3 views
2

여기 새내기. 내가 계정을 만든 후 SHA - 256을 사용하여 사용자 암호를 암호화하려고 시도하고 사용자가 로그인하려고하면 입력을 mysql 데이터베이스의 암호화 된 암호와 일치 시키려고 시도합니다. 누군가가 나에게 예제 코드를 줄 수 있는지 궁금 해서요?SHA-256 암호화로 암호를 만들고 검색하는 PHP 명령은 무엇입니까?

+3

SHA-256은 암호화 기능이 아니라 해시 기능입니다. – Gumbo

답변

6

해싱은 단방향으로 작동하므로 실제로 해시 한 내용을 '검색 할 수 없습니다. 데이터베이스에

$hash=hash('sha256', $password); 

만 저장 $hash : 당신이 등록에 암호를 저장하면

는, 다음과 같은 내용을 사용한다. 사용자가 로그인을 시도하면 사용하려고 시도한 암호를 해시하고 데이터베이스의 암호와 비교합니다 (해시는 항상 동일한 입력에 대해 동일한 결과를 제공합니다). 동일하면 로그인 할 수 있습니다 (모든 추가 점검이 충족되는 경우).

사용자가 잊어 버린 패스를 복구하도록하려면 earlier question을 참조하십시오.

또한 암호 해싱에서 가장 좋은 방법은이 종류의 범위를 벗어나는 일종의 salt을 사용하는 것이지만 google로 보내주십시오.

+2

하지만 SHA256 해시 데이터베이스를 가진 사람들이 일치 항목을 찾을 수 없도록하려면 먼저 암호를 "salt"하여 (즉, 비밀 문자열을 연결하십시오). – Alnitak

+0

@Alnitak 감사합니다. 이미 입력했습니다. :). – kapa

+0

mysql 테이블에서 해시 된 비밀번호와 어떤 변수 유형을 연관 시키나요? – user701510

0

PHP> = 5.5를 사용하는 경우 암호 저장에 password_hash()을 사용하고 확인하려면 password_verify()을 사용해야합니다. PHP> = 5.3을 사용하는 경우이 값은 compatibility module이어야합니다. 이전 버전의 PHP를 사용하는 경우 업그레이드해야합니다.

비밀번호 해시를 굴리지 마십시오. 충분한 스트레스가 없습니다. John the Ripper에서 암호 해시로 해쉬 된 (빠른 것으로 설계된) 암호가 얼마나 빨리 깨 졌는지 확인하십시오.

관련 문제