문제

데이터베이스에 있고 이와 같이 생성 된 소금이 있다고 가정합니다.

$salt = time();

이 두 줄의 차이점은 무엇입니까?

$pass1 = hash('sha1', $password . $salt);

$pass2 = hash_hmac('sha1', $password, $salt);

그들은 같은 출력을 생성하지 않습니다. 첫 번째, The hash 함수는 2 개의 매개 변수를 사용하는 반면 hash_hmac 3 개의 매개 변수가 필요합니다. 그러므로 당신은 우리가 $salt 비밀번호와 연결하는 것과는 달리 별도로 (세 번째 매개 변수를 충족시키기 위해) ($password . $salt) 우리가 2 행에서했던 것처럼, 그러나 그렇게 간단하지는 않지만 두 가지 결과는 다릅니다. 왜요? 정확히 여기서 무슨 일이 일어나고 있습니까?

도움이 되었습니까?

해결책

HMAC SHA-1은 메시지가 포함 된 SHA-1과 동일하지 않기 때문입니다. HMAC는 더 비슷합니다 sha1($salt . sha1($salt . $password)), 그러나 정확히는 아닙니다. Wikipedia는 좋은 설명을 가지고 있습니다 HMAC.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top