0

Rails of this(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)

ただし、データベースに保存されているハッシュとは異なるハッシュを生成します。

4

3 に答える 3

2

Rails 4を使用していますが、@brianのRailsコードがコンパイルされませんでした。

これが私のために働いたものです。

Railsシェル:

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
于 2015-04-07T14:45:02.227 に答える
0

私はこれがあなたが望むことをするだろうと思います:

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

参照しているPHPコードは、HMAC関数のキーとしてsiteSaltを使用しており、ハッシュされる値としてパスワードと連結されたソルトが指定されているようです。

PHPでこのコードを実行してこれを確認しました:

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

そして、Railsシェルで:

>> HMAC::SHA512.hexdigest('siteSalt', 'password' + 'salt')
=> "15b45385a00b10eb25c3aa8198d747862575a796a89a6c79b5a0b8ea332a8d75b1ec0dc1f0c9f7930d30c9359279e86df29067bbbc5d9bcf87839f855ac7a677"
于 2012-02-28T05:19:47.667 に答える
0

PHPコードではソルトが空であることが判明したため、不一致が発生しました。しかし、今では両方のメソッドが同じものを返します。

于 2012-02-28T09:14:47.437 に答える