Tiger で JCE (Java Cryptography Extension) を使って AES 鍵を生成する方法です。
セキュリティに関する API の解説ですが、 作者はセキュリティの専門家ではありません。 本情報をもちいて発生したいかなる問題にも責任を負いかねますので、 あらかじめご了承ください。
共通鍵を生成するには、生成する鍵のアルゴリズムを決める必要があります。 ここでは AES を挙げています。
アルゴリズム | 説明 |
---|---|
AES | 共通鍵暗号化方式で使用する AES 鍵 |
以下に鍵生成コードを示します。なお、例外処理などはすべて省略しています。
KeyGenerator
クラスは共通鍵を生成するためのクラスです。
アルゴリズムを指定して getInstance()
メソッドにより
インスタンスを取得します。
SecureRandom
クラスはセキュリティを考慮した乱数ジェネレータです。
インスタンス取得時にアルゴリズムを指定しますが、
J2SDK では、SunJCE により提供されるアルゴリズムは SHA1PRNG のみです。
先ほど生成した KeyGenerator
インスタンスに対し、
生成する鍵サイズと SecureRandom
を指定して
generateKey()
メソッドを使用して初期化します。
初期化後、generateKey()
メソッドを呼び出すことで、
共通鍵を示す Key
インスタンスを得られます。
生成した共通鍵は他に渡す場合などのために、 符号化してバイト列として取り出せます。
Key
インタフェースの getEncoded()
メソッドは鍵のバイト列を返します。
符号化されたバイト列から鍵を生成することができます。
バイト列から鍵を生成する場合は、SecretKeySpec
クラスを直接操作します。
コンストラクタにバイト列と鍵のアルゴリズムを指定して鍵を表す
Key
インスタンスを得られます。