Java で暗号化したデータを Ruby で復号しようとしたら大変だった件

blowfish で暗号化するからキーはこれね、と適当なことを言われてデータを渡された。
経緯はこれ http://d.hatena.ne.jp/download_takeshi/20100819/1282173492 と殆ど一緒。

padding 方式とか暗号化方式とか一切聞かなかったのも元記事と同様。全然 Ruby で正しく復号も手元で暗号化することも出来ない。

  • Q. そこで私はどうしたか。
  • A. Rjb を使いました。

Rjb を使うことで Ruby プログラマーJava のクラスを Ruby のクラスのように使うことが出来ます。とても便利。

Ruby でどうこうするというのは早晩諦めて(いろいろ調べるのめんどくさいし時間もなかったし Java の場合のリファレンス的なものは先方から貰えたので)、 Java のクラスを Rjb 経由で Ruby から使用することにしました。 Ruby 側のコードは

require "rjb"
Decrypt = Rjb::import "Decrypt"
str = Decrypt.decrypt clusterfuck_encrypted_message #なんとダサいクラス名とメソッド名だろうか。

こんな感じ。実際には config/enviroments.rb とかサービス層とかにいろいろ分かれて置かれているのだが。非常に簡単。パフォーマンス的な問題も(今のところ)発生していない。

適当な仕事の進め方はよくない、しかし案外なんとかなる、ということが分かった一件です。