문제

이 (PHP)의 레일에서의 이치가 무엇입니까?

 hash_hmac('sha512', $password . $salt, $siteSalt);
.

나는 이것만큼 멀리 있습니다 :

Digest::SHA512.hexdigest(password + salt)
.

그러나 방정식에 사이트 소금을 통합하는 방법을 모르면, 내가 본 온라인 예제는 소금을 HexDigest의 방법으로 전달하지 못한다.내가 그것을 시도 할 때 너무 많은 인수에 오류가 발생합니다.

및이 표기법 (어딘가에서 본) :

salted = password + salt
Digest::SHA512.hexdigest("#{salted}:site_salt")
.

는 동일한 해시를 생성하지 않습니다.

감사합니다

편집 나는 이것에 더 가깝게 보이는 것에 더 가까이 보이는 (미안해, 나는 전체 해싱의 일들이 아주 새로운 것)

OpenSSL::HMAC.hexdigest('sha512', site_salt, salted)
.

그러나 데이터베이스에 저장된 것보다 다른 해시를 생성합니다.

도움이 되었습니까?

해결책

이것은 당신이 원하는 것을 할 것입니다 :

HMAC::SHA512.hexdigest(site_salt, password + salt)
.

참조하는 PHP 코드가 SiteAlt를 HMAC 함수의 키로 사용하는 것처럼 보입니다. 암호 및 소금이 해시가되는 값으로 지정된 값으로 연결됩니다.

PHP 에서이 코드를 실행 하여이 코드를 실행하여이 코드를 확인했습니다.

% php -r 'print hash_hmac("sha512", "password" . "salt", "siteSalt") . "\n";'
15b45385a00b10eb25c3aa8198d747862575a796a89a6c79b5a0b8ea332a8d75b1ec0dc1f0c9f7930d30c9359279e86df29067bbbc5d9bcf87839f855ac7a677
.

그리고 나서 레일 쉘에서 :

>> HMAC::SHA512.hexdigest('siteSalt', 'password' + 'salt')
=> "15b45385a00b10eb25c3aa8198d747862575a796a89a6c79b5a0b8ea332a8d75b1ec0dc1f0c9f7930d30c9359279e86df29067bbbc5d9bcf87839f855ac7a677"
.

다른 팁

레일 4를 사용하고 있으며 @ Brian의 레일 코드는 나를 위해 컴파일되지 않았습니다.

여기에 일이 일어난 일입니다.

레일 쉘 :

2.1.2 :001 > Digest::HMAC.hexdigest("password"+"salt","siteSalt",Digest::SHA512)
 => "15b45385a00b10eb25c3aa8198d747862575a796a89a6c79b5a0b8ea332a8d75b1ec0dc1f0c9f7930d30c9359279e86df29067bbbc5d9bcf87839f855ac7a677"
.

PHP (명령 줄에서)

 $ php -r 'print hash_hmac("sha512", "password" . "salt", "siteSalt") . "\n";'
15b45385a00b10eb25c3aa8198d747862575a796a89a6c79b5a0b8ea332a8d75b1ec0dc1f0c9f7930d30c9359279e86df29067bbbc5d9bcf87839f855ac7a677
.

PHP 코드에서 소금이 비어 있으므로 불일치가 발생했습니다.그러나 이제 두 메소드가 동일하게 되돌아갑니다.

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