2014-03-25 3 views
0
include 'lib/php/PasswordHash.php'; 

$hash = $_GET['hash']; 
$pass = $_GET['pass']; 

$hasher = new PasswordHash(8, false); 
$pass = $hasher->HashPassword($pass); 
echo "Original:<br>" . $pass . "<br>"; 
$checked = $hasher->CheckPassword($pass, $hash); 
echo "Hashed:<br>" . $checked . "<br>"; 
echo "<br>"; 
echo "Are they equal? <b>"; 
if($pass == $checked){ echo "Yep!</b>";} else{ 
    echo "Nope. </b>"; 
} 

믿을 수 없을 정도로 간단한 코드는 의도 한대로 작동하지 않습니다. 예, 패스 변수가 해시되고 올바르게 출력되지만 CheckPassword()가 아무 것도 출력하지 못합니다. "hello"라는 간단한 단어를 테스트하여 함수에 직접 삽입했습니다 (예 : CheckPassword ('$ 2 ...', '$ 2 ...'), 여전히 아무 것도 출력하지 않음)PHPass가 해시 검사를 거부합니다.

실행 중 XAMPP Windows에서 문제가 될 수밖에 없다는 결론을 내 렸습니다. 실제 프로젝트보다는이 코드를 사용하여 데이터베이스를 제거하고이 문제를 발견했습니다.

코드의 추악함으로 구토를 피우지 만, 작동시키려는 필사적 인 시도입니다.

이 코드를 직접 실행하는 경우 '통과'및 '해시'GET 변수를 모두 배치해야합니다 이 URL을 테스트 해보세요. 내가 가장 끔찍한 짓을 한 것 같습니다. 실수로 어딘가에서 내 환경을 비난하지 않는다고 확신하지 못합니다.

편집 :

내가 잘못 CheckPassword을 사용하고

$hash = $_GET['hash']; 

$hasher = new PasswordHash(8, false); 
$hash = $hasher->HashPassword($pass); 

echo $hash; 
+1

'CheckPassword'의'$ pass'는 평문이어야합니다, 그렇죠? – zerkms

+0

내가 만든 편집 내용은 'hello'라는 단어에 대한 해시를 생성 한 다음 맨 위에있는 코드의 URL에 넣는 방법을 보여줍니다. – SacredSkull

답변

2

URL에 사용하는 초기 변수를 생성하기 위해 아래의 코드를 사용했다. 첫 번째 인수는 일반 텍스트 여야합니다. 두 번째는 해시입니다. according to the documentation. $pass을 해시 된 값으로 설정 한 다음 CheckPassword의 첫 번째 인수로 사용합니다.

수정 코드 (테스트되지 않은) :

include 'lib/php/PasswordHash.php'; 

$hash = $_GET['hash']; 
$pass = $_GET['pass']; 

$hasher = new PasswordHash(8, false); 
// Just delete this line: $pass = $hasher->HashPassword($pass); 
echo "Original:<br>" . $pass . "<br>"; 
$checked = $hasher->CheckPassword($pass, $hash); 
echo "Hashed:<br>" . $checked . "<br>"; 
echo "<br>"; 
echo "Are they equal? <b>"; 
if($pass == $checked){ echo "Yep!</b>";} else{ 
    echo "Nope. </b>"; 
} 

P.S. $hash의 값을 $_GET에서 가져 오려고하는 이유가 확실하지 않습니다. 사용자가 암호와 해시를 모두 지정할 수있게하면 응용 프로그램에 암호를 부여하여 액세스 권한을 부여 할 수 있습니다. 나는 이것이 단지 테스트 일 뿐이며 실제 앱에서 데이터베이스 나 기타 안전한 저장소를 사용할 것이라고 가정합니다.

+0

"실제 프로젝트보다는이 코드를 사용하여 데이터베이스를 요인으로 사용했습니다. 이 문제를 발견했습니다. " 네, 고맙습니다. 내 문제를 해결했습니다. 나는 그들의 웹 사이트에서 튜토리얼을 따라 가고 있었지만 잘못 읽었을 것입니다. – SacredSkull

+0

도와 드리겠습니다! 답변을 선택하는 것을 잊지 마십시오! :) –

+0

내가 그렇게하도록 허락하자마자, 나는 그렇게 할 것이다. (4 분 제한 시간) – SacredSkull