2006年05月17日

Javaで暗号化と復号

サーバ保存型のノートの設定画面で、FTPサーバに接続するときのパスワードを入力する。
設定項目なので、もちろんプロパティファイルに書き込んで保存する必要がある。
しかし生テキストではあまりにも不用心と言うことで暗号化して保存する。

幸いにもJavaはデフォルトで様々な暗号化アルゴリズムが使えるようだ。

Java Tips:手軽に暗号化・復号化するには?とかを参照

暗号化はとっても簡単

SecretKeySpec sksSpec = new SecretKeySpec( KEY.getBytes(), "Blowfish");
Cipher cipher = Cipher.getInstance("Blowfish");
cipher.init(Cipher.ENCRYPT_MODE, sksSpec);
byte[] encrypted = cipher.doFinal(text.getBytes());

復号もとっても簡単

SecretKeySpec sksSpec = new SecretKeySpec( KEY.getBytes(), "Blowfish");
Cipher cipher = Cipher.getInstance("Blowfish");
cipher.init(Cipher.DECRYPT_MODE, sksSpec);
byte[] decrypted = cipher.doFinal(encryptedBytes);

暗号化アルゴリズムはBlowfishを使ってみた。
暗号は、暗号対象のバイト配列を入力して、暗号化済みバイト配列を出力するので、どんなモノでも暗号化できそうだ。

暗号化鍵はプログラム内に定数として保持、これは金庫に鍵をかけてその金庫の上に鍵を置きっぱなしにしているようなものだけど、パスワードの難読化という意味で目的は達しているのでまぁ良いだろう。


気になる暗号化、復号にかかる時間を計ってみた。
対象は青空文庫で公開されている「吾輩は猫である」のテキスト、サイズは731KB。
暗号化アルゴリズムはBlowfish、暗号化鍵は「abcdefgh」として時間を計ってみた。
結果、P4 2Gマシンで暗号化にかかる時間は1.2秒。復号にかかる時間は0.4秒。

他のアルゴリズムを試してないけど、思ったより速いのね。

Trackback on "Javaで暗号化と復号"

このエントリーのトラックバックURL: 

"Javaで暗号化と復号"へのトラックバックはまだありません。

Comment on "Javaで暗号化と復号"

"Javaで暗号化と復号"へのコメントはまだありません。

Post a Comment

コメントする

コメント登録機能が設定されていますが、TypeKey トークンが設定されていません。