モジュール java.base
パッケージ javax.crypto

クラスSealedObject

java.lang.Object
javax.crypto.SealedObject
すべての実装されたインタフェース:
Serializable

public class SealedObject extends Object implements Serializable
プログラマは、このクラスを使用してオブジェクトを生成し、暗号化アルゴリズムを利用してその機密性を保護することができます。

直列化可能なオブジェクトがあれば、SealedObjectを作成でき、元のオブジェクトを直列化された形式(すなわち、"ディープ・コピー")でカプセル化し、AESなどの暗号化アルゴリズムを使用してシリアル化されたコンテンツをシールして機密性を保護することができます。 そのあと、暗号化された内容の暗号解読(適正な暗号解読キーを使用)、および直列化解除を行うことにより、元のオブジェクトを復元できます。

Cipherオブジェクトは、正しいアルゴリズム、キー、パディング方式などで完全に初期化してからSealedObjectに適用する必要があります。

シールされた元のオブジェクトは、次の異なる2つの方法で復元可能です。

  • CipherオブジェクトをとるgetObjectメソッドを使用する。

    このメソッドは、オブジェクトをシールするのに使用したのとまったく同じアルゴリズム、キー、パディング方式などで完全に初期化されたCipherオブジェクトを必要とします。

    この方法には、復号化キーに関する知識がなくても、シールされたオブジェクトのアンシールを実行できるという利点があります。 たとえば、あるパーティが暗号オブジェクトを必須の復号化キーを使って初期化したあとで、別のパーティに渡すと、そのパーティはシールされたオブジェクトをアンシールできます。

  • KeyオブジェクトをとるgetObjectメソッドの1つを使用する。

    この方法では、getObjectメソッドは、適切な復号化アルゴリズム用の暗号オブジェクトを作成し、シール済みのオブジェクトに格納された特定の復号化キーおよびアルゴリズム・パラメータ(存在する場合)を使用してそれを初期化します。

    この方式には、オブジェクトをシール解除する当事者はオブジェクトをシールするのに使用されたパラメータ(たとえば、IV)を追跡する必要がないという利点があります。

導入されたバージョン:
1.4
関連項目:
Cipher, 直列化された形式
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    protected byte[]
    シールする暗号によって使用される、デフォルトの形式でエンコードされた暗号化パラメータです。
  • コンストラクタのサマリー

    コンストラクタ
    修飾子
    コンストラクタ
    説明
     
    任意のSerializableオブジェクトからSealedObjectを構築します。
    protected
    渡されたSealedObjectオブジェクトからSealedObjectオブジェクトを構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    このオブジェクトをシールするのに使用されたアルゴリズムを返します。
    getObject​(Key key)
    元の(カプセル化された)オブジェクトを取り出します。
    getObject​(Key key, String provider)
    元の(カプセル化された)オブジェクトを取り出します。
    元の(カプセル化された)オブジェクトを取り出します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • フィールド詳細

    • encodedParams

      protected byte[] encodedParams
      シールする暗号によって使用される、デフォルトの形式でエンコードされた暗号化パラメータです。

      つまり、cipher.getParameters().getEncoded()です。

  • コンストラクタの詳細

    • SealedObject

      public SealedObject(Serializable object, Cipher c) throws IOException, IllegalBlockSizeException
      任意のSerializableオブジェクトからSealedObjectを構築します。

      指定されたオブジェクトは直列化され、その直列化されたコンテンツは、完全に初期化された、指定されたCipherを使用して暗号化されます。

      暗号化操作で使用される可能性のあるアルゴリズム・パラメータは、新しいSealedObjectの内部に格納されます。

      パラメータ:
      object - シールするオブジェクト。nullも可。
      c - オブジェクトをシールするのに使用される暗号。
      例外:
      NullPointerException - 指定された暗号がnullの場合。
      IOException - 直列化でエラーが発生した場合
      IllegalBlockSizeException - 指定された暗号がブロック暗号であり、パディングが要求されておらず、入力長の合計(つまり、直列化されたオブジェクトのコンテンツの長さ)が暗号のブロック・サイズの倍数でない場合
    • SealedObject

      protected SealedObject(SealedObject so)
      渡されたSealedObjectオブジェクトからSealedObjectオブジェクトを構築します。
      パラメータ:
      so - SealedObjectオブジェクト
      例外:
      NullPointerException - 指定されたオブジェクトがnullの場合。
  • メソッドの詳細

    • getAlgorithm

      public final String getAlgorithm()
      このオブジェクトをシールするのに使用されたアルゴリズムを返します。
      戻り値:
      このオブジェクトをシールするのに使用されたアルゴリズム
    • getObject

      元の(カプセル化された)オブジェクトを取り出します。

      このメソッドは、シール操作で使用されたアルゴリズムの暗号を作成します。 デフォルトのプロバイダ・パッケージがそのアルゴリズムを実装する場合は、その実装を含むCipherのインスタンスが使用されます。 指定されたアルゴリズムがデフォルトのパッケージで使用可能でない場合は、ほかのパッケージが検索されます。 Cipherオブジェクトは、指定されたkeyと、シール操作に使用されたパラメータ(もしあれば)を使用して、復号化用に初期化されます。

      カプセル化されたオブジェクトは、シールと直列化を解除してから返されます。

      パラメータ:
      key - オブジェクトをシール解除するのに使用するキー。
      戻り値:
      元のオブジェクト
      例外:
      IOException - 直列化解除でエラーが発生した場合。
      ClassNotFoundException - 直列化解除でエラーが発生した場合。
      NoSuchAlgorithmException - オブジェクトをシール解除するアルゴリズムがない場合。
      InvalidKeyException - アルゴリズムが間違っている場合など、指定されたキーを使用してオブジェクトをシール解除できない場合。
      NullPointerException - keyがnullである場合。
    • getObject

      元の(カプセル化された)オブジェクトを取り出します。

      カプセル化されたオブジェクトは、Cipherがすでに適切に初期化されていることを前提として、指定されたCipherを使用してシール解除され、直列化解除されてから返されます。

      パラメータ:
      c - オブジェクトをシール解除するのに使用される暗号
      戻り値:
      元のオブジェクト
      例外:
      NullPointerException - 指定された暗号がnullの場合。
      IOException - 直列化解除でエラーが発生した場合
      ClassNotFoundException - 直列化解除でエラーが発生した場合
      IllegalBlockSizeException - 指定された暗号がブロック暗号であり、パディングが要求されておらず、入力長の合計が暗号のブロック・サイズの倍数でない場合
      BadPaddingException - 指定された暗号が復号化用に初期化されており、パディングが指定されているが、入力データに適切な予期されるパディング・バイトがない場合
    • getObject

      元の(カプセル化された)オブジェクトを取り出します。

      このメソッドは、シール操作に使用されたアルゴリズムの暗号を、指定されたproviderからそのアルゴリズムの実装を使用して作成します。 Cipherオブジェクトは、指定されたkeyと、シール操作に使用されたパラメータ(もしあれば)を使用して、復号化用に初期化されます。

      カプセル化されたオブジェクトは、シールと直列化を解除してから返されます。

      パラメータ:
      key - オブジェクトをシール解除するのに使用するキー。
      provider - オブジェクトをシール解除するアルゴリズムのプロバイダ名。
      戻り値:
      元のオブジェクト
      例外:
      IllegalArgumentException - 指定されたプロバイダがnullか空の場合。
      IOException - 直列化解除でエラーが発生した場合。
      ClassNotFoundException - 直列化解除でエラーが発生した場合。
      NoSuchAlgorithmException - オブジェクトをシール解除するアルゴリズムがない場合。
      NoSuchProviderException - 指定されたプロバイダが設定されていない場合。
      InvalidKeyException - アルゴリズムが間違っている場合など、指定されたキーを使用してオブジェクトをシール解除できない場合。
      NullPointerException - keyがnullである場合。