Class AesEncryptor

java.lang.Object
nablarch.common.encryption.AesEncryptor
All Implemented Interfaces:
Encryptor<AesEncryptor.AesContext>

public class AesEncryptor extends Object implements Encryptor<AesEncryptor.AesContext>
AES暗号(128bit, CBC, PKCS5Padding)を使用して暗号化と復号を行うクラス。
Author:
Kiyohito Itoh
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static final class 
    AES暗号のコンテキスト情報を保持するクラス。
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    byte[]
    decrypt(AesEncryptor.AesContext context, byte[] src)
    コンテキスト情報を使用して復号を行う。
    byte[]
    encrypt(AesEncryptor.AesContext context, byte[] src)
    コンテキスト情報を使用して暗号化を行う。
    暗号化と復号に使用するコンテキスト情報を生成する。
    コンテキスト情報には、共通鍵暗号方式であれば使用する共通鍵を保持する。
    protected byte[]
    generateIv(int length)
    IV(イニシャルバリュー)を生成する。
    protected Key
    generateKey(int length)
    共通鍵を生成する。
    protected byte[]
    共通鍵又はIV(イニシャルバリュー)の文字列からバイト配列を取得する。
    void
    暗号化に使用する128bitの共通鍵及びIVをBase64エンコードした値を設定する。
    void
    Deprecated.
    本メソッドはIVに文字列しか指定できないため、使用できる値に制限があり脆弱である。このためsetBase64Key(Base64Key)を使用すること。
    void
    Deprecated.
    本メソッドは共通鍵に文字列しか指定できないため、使用できる値に制限があり脆弱である。このためsetBase64Key(Base64Key)を使用すること。

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • AesEncryptor

      public AesEncryptor()
  • Method Details

    • setKey

      @Deprecated public void setKey(String key)
      Deprecated.
      本メソッドは共通鍵に文字列しか指定できないため、使用できる値に制限があり脆弱である。このためsetBase64Key(Base64Key)を使用すること。
      暗号化に使用する共通鍵(128bit)を設定する。
      Parameters:
      key - 暗号化に使用する共通鍵(128bit)
    • setBase64Key

      public void setBase64Key(Base64Key base64Key)
      暗号化に使用する128bitの共通鍵及びIVをBase64エンコードした値を設定する。
      Parameters:
      base64Key - 暗号化に使用する鍵
    • setIv

      @Deprecated public void setIv(String iv)
      Deprecated.
      本メソッドはIVに文字列しか指定できないため、使用できる値に制限があり脆弱である。このためsetBase64Key(Base64Key)を使用すること。
      暗号化に使用するIV(イニシャルバリュー)(128bit)を設定する。
      Parameters:
      iv - 暗号化に使用するIV(イニシャルバリュー)(128bit)
    • generateContext

      public AesEncryptor.AesContext generateContext()
      暗号化と復号に使用するコンテキスト情報を生成する。
      コンテキスト情報には、共通鍵暗号方式であれば使用する共通鍵を保持する。
      共通鍵とIV(イニシャルバリュー)を生成し、コンテキスト情報として返す。

      共通鍵は、以下の優先順位で使用する値を決定する。

      1. base64keyプロパティのが設定されている場合はその値
      2. keyプロパティのが設定されている場合はその値
      3. 乱数ジェネレータによる自動生成
      IVは以下の優先順位で使用する値を決定する。
      1. base64keyプロパティのが設定されている場合はその値
      2. ivプロパティのが設定されている場合はその値
      3. 乱数ジェネレータにより自動生成する
      Specified by:
      generateContext in interface Encryptor<AesEncryptor.AesContext>
      Returns:
      暗号化と復号に使用するコンテキスト情報
    • encrypt

      public byte[] encrypt(AesEncryptor.AesContext context, byte[] src)
      Description copied from interface: Encryptor
      コンテキスト情報を使用して暗号化を行う。
      Specified by:
      encrypt in interface Encryptor<AesEncryptor.AesContext>
      Parameters:
      context - コンテキスト情報
      src - 暗号元
      Returns:
      暗号結果
    • decrypt

      public byte[] decrypt(AesEncryptor.AesContext context, byte[] src)
      Description copied from interface: Encryptor
      コンテキスト情報を使用して復号を行う。
      Specified by:
      decrypt in interface Encryptor<AesEncryptor.AesContext>
      Parameters:
      context - コンテキスト情報
      src - 復号元
      Returns:
      復号結果
    • getBytes

      protected byte[] getBytes(String text)
      共通鍵又はIV(イニシャルバリュー)の文字列からバイト配列を取得する。

      デフォルト実装では"UTF-8"で符号化する。

      Parameters:
      text - 共通鍵又はIV(イニシャルバリュー)の文字列
      Returns:
      バイト配列
    • generateKey

      protected Key generateKey(int length)
      共通鍵を生成する。
      Parameters:
      length - 鍵長(bit)
      Returns:
      共通鍵
    • generateIv

      protected byte[] generateIv(int length)
      IV(イニシャルバリュー)を生成する。
      Parameters:
      length - 鍵長(bit)
      Returns:
      IV(イニシャルバリュー)