使用できる暗号

Java「AES暗号」メモ(Hishidama's AES Sample)でAES暗号について学ぶ.「使用できる暗号」項のコード

	Set names = Security.getAlgorithms("Cipher");
	for (Iterator i = names.iterator(); i.hasNext();) {
		String name = (String) i.next();
		System.out.println(name);
	}

の結果(java version "1.6.0_13")は

BLOWFISH
ARCFOUR
PBEWITHMD5ANDDES
RC2
RSA
PBEWITHMD5ANDTRIPLEDES
PBEWITHSHA1ANDDESEDE
DESEDE
AESWRAP
AES
DES
DESEDEWRAP
RSA/ECB/PKCS1PADDING
PBEWITHSHA1ANDRC2_40

無制限強度のポリシー

これも先述のページから転載.

AESの鍵の長さは128bit・192bit・256bitの3種類あるが、デフォルトでは128bitしか使えない。[2006-11-18]
これは、(AESの規格を定めた)アメリカの輸出規制か何かの制限によるものらしい。
使おうとすると、Cipher#init()の実行時に以下のような例外が発生する。

java.lang.SecurityException: Unsupported keysize or algorithm parameters

が、日本ではアメリカと何かの協定を結んでいるらしく、Javaのポリシーファイルを書き換えれば256bitも使える。

Oracle Technology Network for Java Developers | Oracle Technology Network | Oracleから「Java Cryptography Extension (JCE) 無制限強度の管轄ポリシーファイル 6 」,「jce_policy-6.zip」を取得し,適切に更新する.