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

クラスSealedObject

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

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

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

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

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

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

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

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

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

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

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

導入されたバージョン:
1.4
関連項目:
  • フィールドのサマリー

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

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

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

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

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

    • encodedParams

      protected byte[] encodedParams
      デフォルトの形式でエンコードされた、シールCipherオブジェクトで使用される暗号化パラメータ。

      つまり、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である場合。