2012-08-16 2 views
1

사용자 영역과 관리 영역이있는 사이트가 있습니다. 관리 영역에는 사용자 생성 페이지와 관리자 생성 페이지가 있습니다. 사용자 및 관리자 페이지에서 내가 암호를 해시 아래의 코드를 사용 :다른 소금을 사용하는 phpass CheckPassword?

$hasher = new PasswordHash(8, false); 
$password = $HTTP_POST_VARS['password']; 
$hash = $hasher->HashPassword($password); 
$HTTP_POST_VARS['password'] = $hash; 

를 사용자 페이지의 경우, 암호를 확인하는 코드는 다음과 같습니다이 완벽하게 잘 작동

$hasher = new PasswordHash(8, false); 
$check = $hasher->CheckPassword($password, $arrData[$conf['PASSWORD']['FIELD']]); 
if ($check) { 
    //login... 
} 

. 내 사용자 암호가 해시되고 암호를 올바르게 검사합니다. 그러나 관리자 로그인 페이지에서 동일한 코드를 사용하지만 작동하지 않습니다. 데이터베이스에서 올바른 정보를 가져 오지만 CheckPassword를 사용하면 암호가 일치하지 않습니다. 암호의 시작 부분이 동일하기 때문에 소금에 관련이있을 수도 있습니다.

그런데 PHP 4.3을 사용하고 있습니다.

+5

왜 PHP 4.3을 사용하고 있습니까? – Martin

+2

@ Martin 왜 그렇게 중요합니까? 누군가 구식 기술을 사용해야하는 이유는 여러 가지가 있습니다. OP 질문에 대답하는 데 도움이됩니다. – Matt

답변

2

암호의 시작 부분이 동일하기 때문에 소금과 관련이있을 수 있습니다. 당신은 그러나 암호로 해시 (!)의 시작 부분이 동일해야한다고 생각하는 이유

모르겠어요. bcrypt로 만든 해시는 해시 값을 포함하지 않고 사용 된 해시 함수, 라운드 수 및 해시 값을 만드는 데 사용 된 소금의 표시기도 포함하는 모듈 식 암호화 형식을 사용합니다. 그것은 같은 부분입니다.

이것은 귀하의 질문에 대답하지만 당신이 잘못된 장소에서 보이지 않도록 희망이 당신을 위해 몇 가지 세부 사항을 명확히되지 않을 수 있습니다뿐만 아니라 내가로부터이 정보를 복사 관련 질문을 참조하십시오.


는 지금 50 개 문자를 허용하도록 설정 데이터베이스를 가지고있다. 누구든지 가장 긴 해시 phpass가 생성된다는 것을 알고 있습니까?

사용 된 해시 함수에 따라 다릅니다. Phpass의 저자 기사 How to manage a PHP application's users and passwords에서, 다음 예제 MySQL 데이터베이스 스키마가 주어진다 :

당신은 여기에서 볼
create database myapp; 
use myapp; 
create table users (user varchar(60), pass varchar(60)); 

는, 이것은 VARCHAR(60)이다. 이것은 최대 60 문자로 충분하다는 것을 의미합니다. 또 다른 관점에서

은, 워드 프레스는 잘 has the following password column definition Phpass을 사용

user_pass VARCHAR(64) 

64 자 그들을 위해 충분해야한다는 의미를 내포하고있다. 그러나 Wordpress는 다른 해시도 지원한다는 점을 명심하십시오. 따라서이 값은 일반적인 값일 수도 있고 Phpass가 아닌 값일 수도 있습니다.

뿐만 아니라 참조 :

0

내가 생각하는 I 그것을 알아 내었다. 관리자 암호를 저장하는 테이블이 전체 해시를 저장하지 못했습니다. 나는 그 사실을 이전에 깨닫지 못했다고 믿을 수 없다.

나는 이제 50자를 허용하도록 데이터베이스를 설정했습니다. 누구든지 가장 긴 해시 phpass가 생성된다는 것을 알고 있습니까?

+1

필드 유형이 VARCHAR 인 경우, 길이를 255로 설정해도 레코드의 결과 크기에는 큰 영향을 미치지 않습니다. CHAR (255)는 VARCHAR이 무엇인지에 상관없이 255 개의 긴 문자열을 할당합니다. –

+0

@Sean : 데이터베이스의 비밀번호 열 길이에 대한 답변을 업데이트하고 phpass 웹 사이트에 대한 링크를 2 곳 더 남겨 두었습니다. – hakre