0
인터넷에서 bcrypt에 대해 다음 함수를 사용했습니다. 그것은 내가 찾고있는 암호 인 bycrypted 암호를 출력합니다. 또한 소금을 사용하여 검사를 수행하는 기능을했지만이 기능은 소금을 제공하지 않습니다.PHP bcrypt 해시 저장 소금
function bcrypt_hash($password, $work_factor = 8)
{
if (version_compare(PHP_VERSION, '5.3') < 0) throw new Exception('Bcrypt requires PHP 5.3 or above');
if (! function_exists('openssl_random_pseudo_bytes')) {
throw new Exception('Bcrypt requires openssl PHP extension');
}
if ($work_factor < 4 || $work_factor > 31) $work_factor = 8;
$salt =
'$2a$' . str_pad($work_factor, 2, '0', STR_PAD_LEFT) . '$' .
substr(
strtr(base64_encode(openssl_random_pseudo_bytes(16)), '+', '.'),
0, 22
)
;
return crypt($password, $salt);
}
암호와 소금을 별도로 반환해야합니다. 또는이 기능을 별도로 분리 할 수있는 방법이 있습니다.
왜 당신이 그 (것)들을 분리 필요합니까를? 하나의 문자열에 함께 연결하여 저장할 수 있습니다. 이 경우 항상 첫 번째 또는 마지막 X 문자가 소금입니다. 여러 DB 필드 나 함수 반환 값이 필요 없습니다. – feeela
@feeela 호기심 많은 이야기. 그것이 암호 필드에 필요한 모든 것이라면 사용자가 로그인 할 때 어떻게 확인합니까? –
snipplr에 이러한 함수를 게시했습니다. 나는 당신이 아이디어를 얻을 것이라고 생각 : http://snipplr.com/view/66454/passwordhash--generate-salted-passwords/ – feeela