JCE で簡単暗号化
JDK 1.4 から Java Cryptography Extension (JCE) がコアライブラリに追加されている。これにより Java で DES や AES を使った共有鍵 (秘密鍵) 方式の暗号・復号が気軽に扱えるようになった。
// 暗号化するテキストをバイナリ化 |
キー (バイナリ) から SecretKeySpec
を作成し、Cipher
で暗号化を行う。キーは復号化するときにも使うので、乱数とか日付とか不確定なものは NG。また、使用できるキーのビット長はアルゴリズムに依存してるので注意。
上記のサンプルコードから元のバイナリに戻すには以下の通り。Cipher#init()
に指定するモードが異なるだけである。
// 暗号化で使用したキー |
暗号化・復号化ともにバイナリからバイナリへの変換となる。文字列を暗号化する場合は、いったん getBytes()
でバイナリ化してやる必要があるのだが、実行環境の文字エンコーディングの影響を受けないように "UTF-8"
固定にしておくのが無難。
より強固な暗号を使いたい場合は上記サンプルを元にアルゴリズムを変更してキーのビット幅増やせば良い。