2009-03-14 4 views
0

Here이 사이트입니다. 누구든지이 수업에 익숙하다면, 제 질문은 이것입니다.phppas 복어 암호화 (wordpress에서 사용)

나는 그 페이지에서 발견 된 클래스를 사용하여 회원 암호를 해쉬합니다. 코드 선언은 내가 암호가 텍스트 필드에 입력 할 때, 나는 암호를 sarmenhb를 입력 말하는 것으로 나타났습니다이

require_once("password.hash.php"); 
$blowfish = new PasswordHash(8, FALSE); 
$blowfish->HashPassword($_POST['password']); 

같이 보입니다, 작성되는 해시는 같은 곳을 유지하지 않습니다 나는 마치 md5로 그랬다. 입력 할 때마다 암호가 계속 변경되는 것을 확인했습니다 sarmenhb.

사용자가 입력 한 암호가 데이터베이스에있는 암호와 일치하는지 어떻게 확인할 수 있습니까 ??

나는이

$blowfish->checkpassword($_POST['password'],"password in db"); 

을 시도했지만 아무것도 화면이 비어까지 보여줍니다.

테스트에서 필드를 이스케이프 처리하지 않는 이유입니다. 단지 작동하는지보고 싶지만 결과가 없습니다. 대안이 있습니까 ??

ps : 저는 워드 프레스에 대해서는이 작업을 수행하지 않습니다. 이것은 내 로컬 MVC에서만 사용됩니다.

업데이트 :

나는이

include("classes/hash.class.php"); 

$sec = new PasswordHash(8, FALSE); 
$correct = "sarmenhb"; 
//pass generated from $sec->HashPassword($correct); 
$hash = "\$P$\BeJb51gIUh8Qmb1DAW.Hkt1I4gnm2C1"; 
$check = $sec->CheckPassword($correct, $hash); 

if($check) { print "correct"; } 
else { print "incorrect"; } 

을 시도하고 나는 그것을 실행할 때 출력이 잘못된 보여주는 유지합니다.

+0

실제 입력 및 출력의 몇 가지 예는 어떻습니까? 더 많은 정보가 도움이됩니다 ;-) –

답변

1

해시 변수에는 $를 이스케이프 처리하는 슬래시가 있지만 해시가 $ P $가 문자열의 처음 3자를 검사 할 때 실제 문자열의 일부가됩니다. $ blowfish-을 할 때 당신은 작은 따옴표로 변경하고, 슬래시를 제거하면 그것은 당신이 아무 말 없다가 아니라 완전한 혼란 스러워요

$hash = '$P$BeJb51gIUh8Qmb1DAW.Hkt1I4gnm2C1';

작동하면 나타납니다> checkpassword를 ($ _ POST [ '비밀' ], "password in db"); 물론 아무것도 표시하지 않으며 true 또는 false를 반환하지만 더 많은 코드와 결합하지 않으면 아무 것도 인쇄하지 않습니다. 데이터베이스에 저장된 암호가 어떤 형태로도 이스케이프되거나 변경되지 않았는지 확인하십시오. 당신이 그것을 사용하여 변수를 인쇄 해보십시오?

해시 된 암호가 사용될 때마다 소금에 절인되어 있기 때문에 해시 된 암호가 동일하지 않습니다. 해시에 소금이 들어있어 나중에 비교할 수 있습니다. 소금은 임의의 문자/숫자/기호 일 뿐이므로 해시를 변경하기가 쉽지 않습니다.

관련 문제