소금에 소금을 지나가는 레일에 루비 :: Sha512
-
13-11-2019 - |
문제
이 (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 코드에서 소금이 비어 있으므로 불일치가 발생했습니다.그러나 이제 두 메소드가 동일하게 되돌아갑니다.
제휴하지 않습니다 StackOverflow