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 とかサービス層とかにいろいろ分かれて置かれているのだが。非常に簡単。パフォーマンス的な問題も(今のところ)発生していない。
適当な仕事の進め方はよくない、しかし案外なんとかなる、ということが分かった一件です。