2013-01-17 2 views
0
에 대한 임의의 소금을 생성하는

가능한 중복 :
Secure hash and salt for PHP passwords어떻게 해시 암호

내가 임의의 소금을 생성 한 다음 사용자 데이터베이스에서 암호와 함께 그것을 저장할. 이렇게 나는 이렇게 생각합니다.

$salt = //random salt code 
$hpassword = crypt($password,$salt) 
+0

'crypt'는 소금 값에 대해 매우 특정한 요구 사항을 가지고 있습니다. 어떤 종류의 해싱을 사용 하시겠습니까? –

+0

내가 추측하기에 bcrypt가 최고라고 들었어? –

답변

0

기존 입력란 (예 : 사용자 이름)을 해싱하여 소금에 사용하십시오.

여기보십시오 : PHP 5.5이 내장 것이다 http://en.wikipedia.org/wiki/PBKDF2

+3

어떤 사람들은 기존 필드를 사용하지 말고 임의의 소금을 사용해야한다고 말합니다. http://stackoverflow.com/a/2248920/14955 – Thilo

+0

다른 의견 : 암호가 충분히 강하면 (재귀 해싱) 무지개 표가 쓸모 없게됩니다. . (다른 한편으로는, 저장된 소금이 손상된 경우 약한 알고리즘을 사용하는 경우 암호를 잊어 버리십시오) ... – boruch

+0

소금으로 사용하기 전에 기존의 필드를 먼저 자신의 알고리즘으로 뒤섞어 쓰는 것은 어떨까요? –

1

버전 지원 BCrypt를 들어, 기능 password_hash()password_verify(). PHP 버전 5.3.7 이상의 경우, 거기에 compatibility pack 존재, 거기 당신이 기능 mcrypt_create_iv()를 사용하여 소금을 만드는 방법의 좋은 구현을 찾을 수 있습니다, 당신을 라인 (86)과이 때문에 호환 기능 팩의

(121)를 참조 직접 작성하는 대신이 함수를 직접 사용하는 것을 고려해야합니다. 여기서 example을 찾을 수 있습니다. 특히 BCrypt의 소금 생성은 까다 롭고 많은 실수를 야기 할 수 있습니다.

P. 결정적인 컴퓨터에서는 고유 한 및 을 예측할 수 없기 때문에 가능한 한 무작위로 소금을 사용해야합니다 (운영 체제의 무작위 소스에서 읽음). 은 예측할 수 없습니다.