3. 暗号化のプログラム例
2006.04.04 株式会社四次元データ 里見玲爾
JCE(Java暗号化拡張機能) 3章 暗号化のプログラム例
- 3.1. 暗号化のプログラム例
3.1. 暗号化のプログラム例
2章ではjavaによる暗号化の流れを大まかに解説しました。この章では実際にプログラム例を見ながら解説します。 まず2章で挙げた大まかな流れを以下にもう1度示しておきます。
- Key, AlgorithmParameters, Cipherオブジェクトをそれぞれ生成する
- Key, AlgorithmParametersオブジェクトを使ってCipherオブジェクトを初期化する
- Cipherオブジェクトを使ってテキストを暗号化(復号化)する
この章では簡単のため、アルゴリズムパラメータを用いない対称鍵暗号化方式であるDESによる暗号化の例を
紹介します。
「Techscore-J2SE-JCE」という文字列を以下のようなコードで暗号化しています。
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
public class Sample{
public static void main(String args[]) throws
InvalidKeyException,
NoSuchPaddingException,
NoSuchAlgorithmException,
BadPaddingException,
IllegalBlockSizeException{
byte[] cleartext = "Techscore-J2SE-JCE".getBytes();
Cipher cipher = Cipher.getInstance("DES");
KeyGenerator keyGen = KeyGenerator.getInstance("DES");
keyGen.init(56);
SecretKey key = keyGen.generateKey();
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] etext = cipher.doFinal(cleartext);
System.out.println("暗号化した結果 : " + new String(etext));
}
}
cleartextがもとの文字列の符号化表現、etextが暗号化された文字列の符号化表現を表しています。
javaの暗号化に使用するクラスのほとんどはjavax.cryptoパッケージとjava.securityパッケージに
含まれているため、1-8行目でこの2つのパッケージから必要なクラス、インタフェースをインポートしています。
このコードで使用しているクラス、インタフェースは例外を除くとCipher、SecretKey、KeyGeneratorの3つと
いうことになります。KeyGeneratorクラスは鍵を生成するためのクラスで、詳しくは次章で解説します。
2章で挙げた手順1のCipherオブジェクトの生成は24行目、Keyオブジェクトの生成は29行目で行っています。
このKeyオブジェクトを使って32行目で手順2のCipherオブジェクトの初期化し、35行目で手順3の暗号化したあと
37行目で暗号化した結果を出力しています。
それぞれの引数などが気になるところですが、それらは次章以降でじっくり見ていくことにしましょう。
まず次章では鍵を生成するKeyGeneratorクラスについて解説します。

