9. アルゴリズムパラメータ
2006.09.25 株式会社四次元データ 里見玲爾
この章では、アルゴリズムパラメータについて解説します。 アルゴリズムパラメータとは、暗号化に使用するアルゴリズム特有のパラメータを保持するオブジェクトです。
9.1. AlgorithmParamtersとAlgorithmParamterSpec
アルゴリズムパラメータを表すオブジェクトにはAlgorithmParametersとAlgorithmParameterSpecの2種類があると2章で解説しました。
この2つには8章で解説した鍵と鍵仕様の違いと同じような違いがあります。
AlgorithmParamtersはパラメータに関するデータに直接アクセスすることができず不透明表現と呼ばれ、
AlgorithmParamterSpecはパラメータに関するデータに直接アクセスすることができ、透明表現と呼ばれます。
AlgorithmParamtersをアルゴリズムパラメータと呼ぶのに対してAlgorithmParameterSpecはアルゴリズムパラメータ仕様、パラメータ仕様と呼ばれます。
またすべてのアルゴリズムパラメータはAlgorithmParametersクラスを継承し、すべてのパラメータ仕様は
AlgorithmParameterSpecインタフェースを実装する必要があります。
以下ではAlgorithmParametersクラスについて解説します。
9.2. AlgorithmParametersオブジェクトの生成
AlgorithmParametersオブジェクトを生成するには今までと同様、getInstanceファクトリメソッドを使います。
static AlgorithmParameters getInstance(String algorithm); static AlgorithmParameters getInstance(String algorithm, String provider); static AlgorithmParameters getInstance(String algorithm, Provider provider);
9.3. AlgorithmParamtersオブジェクトの初期化
AlgorithmParametersオブジェクトの初期化は次のinitメソッドを実行します。
void init(AlgorithmParameterSpec params); void init(byte[] params); void init(byte[] params, String format);
アルゴリズムパラメータを必要とする暗号化アルゴリズムを利用して暗号化されたテキストを復号化する場合、
暗号化した側からアルゴリズムパラメータの符号化形式を受け取って(符号化形式はgetEncodedメソッドで得られる)、
上の例の真ん中のメソッドでアルゴリズムパラメータを初期化すれば、
暗号化に使われたパラメータのデータを持ったAlgorithmParametersオブジェクトを獲得できます。
また1つめのinitメソッドによって、パラメータ仕様からアルゴリズムパラメータへ変換できるということになります。
3つめのメソッドのformatでは符号化の方式を指定します。
9.4. アルゴリズムパラメータからパラメータ仕様への変換
アルゴリズムパラメータからアルゴリズムパラメータ仕様へ変換するには、 AlgorithmParametersオブジェクトに対して下のgetParameterSpecメソッドを実行します。
AlgorithmParameterSpec getParameterSpec(Class paramSpec);
paramSpecには返されるべきパラメータ仕様クラスを指定します。 たとえばDSAアルゴリズムパラメータを変換する場合、返されるべきクラスはjava.security.spec.DSAParameterSpec なのでそれを渡します。
AlgorithmParametersクラスではこのようなメソッドが定義されているのに対して、 AlgorithmParameterSpecは定数もメソッドもないインタフェースで、すべてのパラメータ仕様のグループ分けにのみ使用されます。 またAlgorithmParameterSpecを実装したクラスではパラメータにアクセスするためのメソッドが定義されています。