2012-04-23 3 views
0

私はRoRでBCryptを使用しています。私は慣れていた16進表現ではなく数値を取得しています。ここに犯罪コードがあります。Ruby BCryptの返す数字

username = params[:username] 
password = params[:password] 

encrypted_password = BCrypt::Password.create(password) 
encrypted_password = encrypted_password.hash 

encrypted_pa​​ssword変数は、私はJava用のbcryptのを使用しましたし、私は$ 2asfa $ asdfasfsafsadのようなものを期待していたのです4245597694343378249.のような数字として出てきます。誰かが私が間違っていることを知っていたのだろうかと思っていました。

ご協力いただきまして誠にありがとうございます。

+0

だけのメモを、「暗号化」、それを呼び出すと、実際には正しくありませんそれはハッシュです。 –

+0

@AndrewMarshallありがとうアンドリュー、私は違いをよく知っていません。私は、口述の違いは、暗号化が情報を隠す目的で2つの方法であり、後で平文に変換するのに対し、ハッシュは一方向の一意の関数であるということです。 –

答えて

3

数値のシーケンスとして出力されるパスワード変数は、暗号化されたパスワードに適用される.hashのためです。だから、あなたは長さと内容に基づいてハッシュを与えるString#hashメソッドを呼び出しています。

あなたはただ、次ん期待しているbcryptの出力を見たい場合:

username = params[:username] 
password = params[:password] 

encrypted_password = BCrypt::Password.create(password) 
puts encrypted_password 

乾杯、 ショーン

+0

ありがとうショーン、それだった。何らかの理由で、RubyのBCrypt実装には、私が慣れているより少し魔法がかかりそうです。パスワードハッシュの文字列を使用するインスタンスを教えてもらえますか? –

+0

私は正直言って実用的な使用はありませんでした。私がそれを使うことができるのは比較だけです...何千もの文字列を.hashとして保存してから平等をチェックすることは、文字列自体よりも少ないと思われます。 – Sean