2. Javaによる暗号化
2006.03.28 株式会社四次元データ 里見玲爾
- 2.1. 準備
- 2.2. 鍵オブジェクト
- 2.3. アルゴリズムパラメータ
- 2.4. Cipherオブジェクト
- 2.5. プログラムの大まかな流れ
2.1. 準備
Javaによる暗号化には、JavaのコアAPIであるSecurity APIとJava暗号化拡張機能(JCE)が必要になります。 JCEはJava 2 SDK v1.2.x、1.3.xでは拡張機能でしたが、Java 2 SDK 1.4以降ではJCEが統合され、 さらに"SunJCE"という標準JCEプロバイダがあらかじめインストール、登録されています。 以下ではjava 2 SDK 1.4以降をダウンロードしていることを前提とします。
次節からはjavaによる暗号化、復号化に必要なオブジェクトについて簡単に解説します。
2.2. 鍵オブジェクト
暗号化には鍵が必要だということは第1章で解説しました。javaによる暗号化を行うときにこの鍵の役割を果たすのが
鍵オブジェクトです。鍵オブジェクトの表現にはjava.security.Keyインタフェースのオブジェクトや
java.security.spec.KeySpecインタフェースのオブジェクトを扱います。この2つの違いについては別途
「鍵オブジェクトの生成」の章で解説します。
実際のプログラムではKeyオブジェクトをそのまま使用することはなく、
非対称鍵暗号化方式の場合は非公開鍵(PrivateKey)オブジェクトと公開鍵(PublicKey)オブジェクトを
鍵オブジェクトとして扱い、対称鍵暗号化方式の場合は共通鍵(SecretKey)オブジェクトをここでの鍵オブジェクト
として扱います。PrivateKeyもPublicKeyもSecretKeyも、Keyインタフェースのサブインタフェースです。
2.3. アルゴリズムパラメータ
アルゴリズムパラメータとは、暗号化に使用するアルゴリズム特有のパラメータのことです。
例えばあるメソッドに対して引数を与えるのと同じように、あるアルゴリズムにはアルゴリズムパラメータを与えます。
暗号化アルゴリズムの中には鍵のみが必要なアルゴリズムもあり、その場合はアルゴリズムパラメータは
必要ありません。またアルゴリズムパラメータが必要なアルゴリズムで暗号化された場合は、
どのようなパラメータで暗号化が行われたかに関する情報がないと復号化できません。
アルゴリズムパラメータのオブジェクト表現としてはjava.security.AlgorithmParametersクラスのオブジェクトや
java.security.spec.AlgorithmParameterSpecインタフェースのオブジェクトを扱います。
この2つの違いについては別途「アルゴリズムパラメータ」の章で解説します。
2.4. Cipherオブジェクト
暗号化、復号化を行う際に必ず必要になるのがjavax.crypto.Cipherオブジェクトです。 Cipherオブジェクトは鍵オブジェクトやアルゴリズムパラメータを使って初期化することにより 鍵やパラメータに関する情報を受け取って、暗号化や復号化を行います。
2.5. プログラムの大まかな流れ
では、javaによる暗号化(復号化)の大まかな流れについて簡単に解説します。
- Key, AlgorithmParameters, Cipherオブジェクトをそれぞれ生成する
- Key, AlgorithmParametersオブジェクトを使ってCipherオブジェクトを初期化する
- Cipherオブジェクトを使ってテキストを暗号化(復号化)する
大まかな流れはこのようになります。次章では実際のプログラム例を紹介します。