(-> % read write unlearn)

All opinions expressed are solely my own and do not express the views or opinions of my employer.

Rubyで共通鍵暗号:String#crypt(salt)

Ruby共通鍵暗号化を使うからググったりしたメモ。 環境は OS-X 10.11.1 で RUBY 2.2.3 です。

String#crypt(salt)

というメソッドがある。

http://ref.xaio.jp/ruby/classes/string/crypt

暗号化アルゴリズムは「RubyコンパイルしたC言語ライブラリのcrypt関数に依存」するが、基本的にはDESアルゴリズムDESってことは、暗号強度的にこれはもう使っちゃ駄目なメソッドですね。手軽だけど。 使い方は次の通り。

"foo".crypt("XX")
#=> "XXLQjxOvqhSMc"
  • 第一引数のsaltは、渡された文字列の先頭2byteだけ使われて、あとは捨てられてしまうみたい。
  • そして、返り値の先頭2byteは、まんまsaltですね。
"foo".crypt("XX")
=> "XXLQjxOvqhSMc"

"foo".crypt("XXX")
=> "XXLQjxOvqhSMc"

"foo".crypt("XXY")
=> "XXLQjxOvqhSMc"

ここらへんの挙動も環境依存なのかもしれないが、自分の手元の環境だとそうなってる。
しかし、これってどうやって復号化するんだろう。。