2011-11-30 1 views
1

지금까지 많이 사용하지는 않았지만 phpass에서 찾은 hasher를 사용하고 있습니다. 그럼 나는 다른 게시물을 읽고 "forget password page, creating a generated password to email to the user.", 여기 stackoverflow nageeb로 작성했습니다. 그 후로부터php 자체의 해시 프레임 워크가 phpass보다 우수합니다

발췌 :

이용자 (등록 양식) 암호를 생성 함수는 암호화하여를 임의 염을 생성 한 다음 : 여기

제가 사용 단계별 방법의 이 경우 암호는 SHA256 알고리즘을 사용하고 무작위로 생성 된 소금을 사용합니다.

$ password_salt = bin2hex (mcrypt_create_iv (32, MCRYPT_DEV_URANDOM));

$ password_hash = hash ('sha256', $ salt. $ password);

$ password_hash 및 $ password_salt를 users 테이블에 저장하십시오. 나중에 사용자 로그인을 시도 할 때 인증에 사용됩니다.

사용자가 로그인하면 사용자 이름/이메일/로그인을 확인하고 사용자 테이블에서 해시 및 소금을 가져 와서 db의 비밀번호 해시와 동일한 기능을 수행 한 결과 인 해시를 비교합니다 비밀번호로 입력하십시오.

$ salt = $ user_record [ 'password_salt'];

$ entered_hash = hash ('sha256', $ salt. $ entered_password);

여기에는 PHP가 모든 해싱 요구에 대해 기본 기능을 가지고있는 것처럼 보입니다. 이것은 나를 더 나은 것으로 생각하게 만든다. phpass 사용을 중단하고 PHP 해시 프레임 워크를 사용해야합니까?

답변

6

약자 : 아니요 이미 phpass를 사용하고 있다면 phpass를 사용하지 마십시오.

는 비밀번호 그냥 "해시"보다 조금 더 않기 때문에 다음 phpass을 고수해야한다 "는 PHP에 내장 아니에요"로 사용하지 않는 다른 이유가없는 경우 :

  • 보다 복숭아를 사용하려고 시도하기 때문에 무차별 공격으로 깨지기가 더 어려워졌습니다.
  • md5()으로 되돌아 가야한다면 비용을 "에뮬레이트"하기 위해 여러 번 호출해야합니다.

PHP의 해시 메커니즘을 사용하여이를 수행 할 수는 있지만 바퀴를 다시 발명하는 것과 같습니다.

+0

고맙습니다. 당신이 언급 한 링크를 읽고 그것은 기본적으로 모든 것을 말합니다 - phpass는 복어를 사용하며 암호를 사용하는 방법입니다. – Espen

관련 문제