目次へ

3. 暗号化のプログラム例

2006.04.04 株式会社四次元データ 里見玲爾

3.1. 暗号化のプログラム例

2章ではjavaによる暗号化の流れを大まかに解説しました。この章では実際にプログラム例を見ながら解説します。 まず2章で挙げた大まかな流れを以下にもう1度示しておきます。

  1. Key, AlgorithmParameters, Cipherオブジェクトをそれぞれ生成する
  2. Key, AlgorithmParametersオブジェクトを使ってCipherオブジェクトを初期化する
  3. 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クラスについて解説します。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp