暗号化プロバイダを探す

AES暗号化プロバイダを探してましたが、昔使った記憶があるもの http://www.bouncycastle.org/
にたどりつきました。

stackoverflow で紹介されていた 暗号化プロバイダに、bouncycastle を使ったAES暗号化のサンプル

http://stackoverflow.com/questions/3150830/android-encryption

で、以下が紹介、、、

http://www.java2s.com/Code/Java/Security/EncryptionanddecryptionwithAESECBPKCS7Padding.htm

このプログラム、鍵に誤りがあって動かない。AES128 なら、鍵のバイト数が16バイトでなければならないのに、
サンプルは、18バイトになってる。セキュリティ上、わざと?
サンプルのままでは、以下のエラー

  java.security.InvalidKeyException: Illegal key size or default parameters

が発生する。

さらに、bouncycastle プロバイダを使用できるようにするためには、
本当は、、、
 $JAVA_HOME/jre/lib/ext/
の下に、http://www.bouncycastle.org/ からダウンロードした
 JAR ファイルを置き、
 $JAVA_HOME/jre/lib/security/java.security に、以下を追記、

 security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider

という約束だったと思うが、
JAR を クラスパスに入れて、

 Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

を代わりに実行することで

修正したサンプルは動いた。

jar の場所→ http://www.bouncycastle.org/latest_releases.html