文字列を暗号化したかったのでcrypt使ってたら、違う文字列なのに同じ結果になってしまいました。
試したrubyのバージョンはこれです。
$ ruby -v ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]
まずはcryptつかったコード。
salt = 'qwlkjrklajfkajsfkljalkfjalksjflak' str1 = '12345' str2 = '100000001' str3 = '100000002' puts str1.crypt(salt) puts str2.crypt(salt) puts str3.crypt(salt)
実行するとこんな感じになります。
$ ruby test.rb qwAFWgKJ1g.E2 qw2y5TDILwIcA qw2y5TDILwIcA
公式のドキュメントを見てみると、cryptは先頭8文字の内容で暗号化を行うようです。
なので、この場合はDigest使うとよいみたいです。
require 'digest' str1 = '12345' str2 = '100000001' str3 = '100000002' puts Digest::MD5.hexdigest(str1) puts Digest::MD5.hexdigest(str2) puts Digest::MD5.hexdigest(str3)
実行するとこうなりました。
$ ruby test.rb 827ccb0eea8a706c4c34a16891f84e7b d69d3401d01a8ceed4549434e5ad9f40 5a5ea04157ce4d020f65c3dd950f4fa3
参考URL
http://docs.ruby-lang.org/ja/2.1.0/method/String/i/crypt.html
http://ruby-doc.org/stdlib-2.1.0/libdoc/digest/rdoc/Digest.html
0 件のコメント:
コメントを投稿