Task Auth uses PHPass for password hashing (이전 버전은 좋은 기호가 아니므로 설치시 update that을 원할 수 있습니다.) PHPass에는 휴대용과 bcrypt의 두 가지 모드가 있습니다.
PHP 버전에 따라 휴대용 해시가 필요하지 않습니다. PHP 5.3 이상에서 PHP는 시스템에서 사용할 수없는 경우 자체 bcrypt 구현을 제공합니다. 모든 서버에 PHP 5.3 이상이있는 경우 휴대용 해시를 해제하는 것이 좋습니다. PHPass "portables hashes"는 PHP가 설치된 버전에 따라 bcrypt를 사용할 수 없기 때문에 존재합니다.
즉, PHPass 휴대용 해시는 해시에 소금을 저장합니다. 그래서 같은 암호를 사용하는 모든 실행이 다릅니다.
또한 PHPass은 버전 가능한 md5()
함수 $rawMode
매개 변수를 지원하는지 * 확인할 그 해시의 발생시 PHP_VERSION
를 이용한다. 그렇지 않은 경우 pack()
은 16 진수 데이터를 2 진수로 변환하는 데 사용됩니다 (이 작업은 분기가 이루어진 이유 인 $rawMode
을 사용하면 상당히 느립니다.).
다시 말해, 모든 서버가 PHP 5.3 이상을 실행하는 경우 휴대용 모드를 해제하고 PHPass가 bcrypt
을 사용하도록 강력히 권장합니다. PHP 5.3+가 시스템을 사용할 수 없을 때 자체 구현을 제공하기 때문에 해시는 OS마다 검사 할 수 있습니다. 휴대용 모드를 끄더라도, PHPass는 오래된 해시를 적절한 방법으로 검사 할만큼 똑똑 할 것입니다.
* 131
EDIT 자세한 설명은 여기에 휴대용 모드 해시가 생성되는 방법이다 (단순화 PHPass 검색된 실제 변수를 사용할 수 있지만, 정확하지 않음). PHPass는 자체 버전의 base64 인코딩을 사용합니다.
$final = '$P$'
$final .= encode64_int($rounds)
- 는
$final .= genSalt()
(염 6 바이트 ... 8 바이트 "encode64"포맷 (생성자에서 최소 3 다른 PHP 5+ 5이다)).
:
$hash = md5($salt . $password)
2
$rounds
번, 그래서 최종 해시가 기본적으로 이것이다 $hash = md5($hash . $password)
$final = encode64($hash)
을
이것은 화제가 아니며, PHPass가 비 휴대용 모드에서 생성 한 해시의 이식성에 관한 것입니다. –