The Legion of the Bouncy Castle

以前にJavaで使用できるフリーの暗号プロバイダとしてGNU Cryptoを紹介しましたが、他にもBouncy Castleというものがあります。

かなり最新と思われるSHA224やISO-9796-2/PSSなどのアルゴリズムのサポートされています。また、CMSS/MIME、OpenPGPも使用可能なので、アプリケーションに暗号機能を追加するのに役に立つことでしょう。

Bouncy Castle暗号パッケージを組み込むには、次のようにします。

  1. http://www.bouncycastle.org/からJarファイルをダウンロードします。
  2. CLASSPATHにダウンロードしたJarファイルを追加します。
  3. <JAVA_HOME>/jre/lib/security/java.securityを以下のように編集します。


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

参考までにプロバイダの情報を表示すると次のようになりました。


Provider name: BC
Service algorithm: BKS, BouncyCastle, PKCS12, BCPKCS12, PKCS12-DEF, X.509, DH, DSA, ELGAMA
L, DES, DESEDE, 1.2.840.113549.3.7, 1.3.14.3.2.7, IDEA, 1.3.6.1.4.1.188.7.1.1.2, RC2, 1.2.
840.113549.3.2, CAST5, 1.2.840.113533.7.66.10, AES, DH, DSA, ELGAMAL, IES, PKCS12PBE, 1.2.
840.113549.3.7, IDEA, 1.3.6.1.4.1.188.7.1.1.2, CAST5, 1.2.840.113533.7.66.10, DH, ECDH, EC
DHC, DES, DESEDE, 1.2.840.113549.3.7, 1.3.14.3.2.7, DESEDEWRAP, 1.2.840.113549.1.9.16.3.6,
SKIPJACK, BLOWFISH, TWOFISH, RC2, RC2WRAP, 1.2.840.113549.1.9.16.3.7, ARC4, RC4, RC5, 1.2
.840.113549.3.2, RC5-64, RC6, RIJNDAEL, AES, 2.16.840.1.101.3.4.1.2, 2.16.840.1.101.3.4.1.
22, 2.16.840.1.101.3.4.1.42, AESWRAP, SERPENT, CAST5, 1.2.840.113533.7.66.10, CAST6, IDEA,
1.3.6.1.4.1.188.7.1.1.2, PBEWITHSHAAND3-KEYTRIPLEDES-CBC, RSA, RSA/RAW, RSA/PKCS1, 1.2.84
0.113549.1.1.1, 2.5.8.1.1, RSA/1, RSA/2, RSA/OAEP, 1.2.840.113549.1.1.7, RSA/ISO9796-1, EC
IES, ELGAMAL, ELGAMAL/PKCS1, PBEWITHMD5ANDDES, BROKENPBEWITHMD5ANDDES, PBEWITHMD5ANDRC2, P
BEWITHSHA1ANDDES, BROKENPBEWITHSHA1ANDDES, PBEWITHSHA1ANDRC2, BROKENPBEWITHSHAAND3-KEYTRIP
LEDES-CBC, OLDPBEWITHSHAAND3-KEYTRIPLEDES-CBC, PBEWITHSHAAND2-KEYTRIPLEDES-CBC, BROKENPBEW
ITHSHAAND2-KEYTRIPLEDES-CBC, PBEWITHSHAAND128BITRC2-CBC, PBEWITHSHAAND40BITRC2-CBC, PBEWIT
HSHAAND128BITRC4, PBEWITHSHAAND40BITRC4, PBEWITHSHAANDTWOFISH-CBC, OLDPBEWITHSHAANDTWOFISH-
CBC, PBEWITHSHAANDIDEA-CBC, DES, DESEDE, 1.2.840.113549.3.7, DESEDEWRAP, SKIPJACK, BLOWFI
SH, TWOFISH, RC2, 1.2.840.113549.3.2, RC4, RC5, RC5-64, RC6, RIJNDAEL, AES, 2.16.840.1.101
.3.4.2, 2.16.840.1.101.3.4.22, 2.16.840.1.101.3.4.42, 2.16.840.1.101.3.4.1.2, 2.16.840.1.1
01.3.4.1.22, 2.16.840.1.101.3.4.1.42, AESWRAP, SERPENT, CAST5, 1.2.840.113533.7.66.10, CAS
T6, IDEA, 1.3.6.1.4.1.188.7.1.1.2, HMACMD2, HMACMD4, HMACMD5, HMACRIPEMD128, HMACRIPEMD160
, HMACSHA1, HMACTIGER, RSA, DH, DSA, ELGAMAL, EC, ECDSA, ECDH, ECDHC, ECIES, RSA, DH, DSA,
ELGAMAL, EC, ECDSA, ECDH, ECDHC, DES, DESEDE, RC2, 1.2.840.113549.3.2, RC5, RC6, BLOWFISH
, TWOFISH, SKIPJACK, RIJNDAEL, AES, PBE/PKCS5, PBE/PKCS12, DES, DESEDE, DESMAC, DESMAC/CFB
8, DESEDEMAC, DESEDEMAC/CFB8, SKIPJACKMAC, SKIPJACKMAC/CFB8, IDEAMAC, IDEAMAC/CFB8, RC2MAC
, RC2MAC/CFB8, RC5MAC, RC5MAC/CFB8, HMACMD2, HMACMD4, HMACMD5, HMACRIPEMD128, HMACRIPEMD16
0, HMACSHA1, HMACSHA224, HMACSHA256, HMACSHA384, HMACSHA512, HMACTiger, PBEWITHHMACSHA, PB
EWITHHMACRIPEMD160, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, MD2, MD4, MD5, 1.2.840.1135
49.2.5, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, Tiger, MD2WithRSAEncryption, MD5WithRS
AEncryption, SHA1WithRSAEncryption, SHA224WithRSAEncryption, RIPEMD160WithRSAEncryption, R
IPEMD128WithRSAEncryption, RIPEMD256WithRSAEncryption, DSA, ECDSA, SHA1withRSA/ISO9796-2,
MD5withRSA/ISO9796-2, RIPEMD160withRSA/ISO9796-2, SHA1withRSA/PSS, SHA256withRSA/PSS, SHA3
84withRSA/PSS, SHA512withRSA/PSS, PKIX, PKIX, Collection