- すべての実装されたインタフェース:
Serializable
Serializable
オブジェクトがある場合、元のオブジェクトを直列化形式(例: "deep copy")でカプセル化するSealedObject
を作成し、AESなどの暗号化アルゴリズムを使用して、その機密性を保護するために、その直列化されたコンテンツを(encrypts)にシールできます。 そのあと、暗号化された内容の暗号解読(適正な暗号解読キーを使用)、および直列化解除を行うことにより、元のオブジェクトを復元できます。
SealedObject
に適用する前に、Cipher
オブジェクトを正しいアルゴリズム、キー、パディング・スキームなどで完全に初期化する必要があります。
シールされた元のオブジェクトは、次の異なる2つの方法で復元可能です。
Cipher
オブジェクトをとるgetObject
メソッドを使用する。このメソッドは、オブジェクトをシールするのに使用したのとまったく同じアルゴリズム、キー、パディング方式などで完全に初期化された
Cipher
オブジェクトを必要とします。この方法には、復号化キーに関する知識がなくても、シールされたオブジェクトのアンシールを実行できるという利点があります。 たとえば、あるパーティが暗号オブジェクトを必須の復号化キーを使って初期化したあとで、別のパーティに渡すと、そのパーティはシールされたオブジェクトをアンシールできます。
Key
オブジェクトをとるgetObject
メソッドの1つを使用する。この方法では、
getObject
メソッドは、適切な復号化アルゴリズム用の暗号オブジェクトを作成し、シール済みのオブジェクトに格納された特定の復号化キーおよびアルゴリズム・パラメータ(存在する場合)を使用してそれを初期化します。この方式には、オブジェクトをシール解除する当事者はオブジェクトをシールするのに使用されたパラメータ(たとえば、IV)を追跡する必要がないという利点があります。
- 導入されたバージョン:
- 1.4
- 関連項目:
-
フィールドのサマリー
-
コンストラクタのサマリー
修飾子コンストラクタ説明SealedObject
(Serializable object, Cipher c) 任意のSerializable
オブジェクトからSealedObject
を構築します。protected
渡されたSealedObject
からSealedObject
オブジェクトを作成します。 -
メソッドのサマリー
-
フィールド詳細
-
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
public final Object getObject(Key key) throws IOException, ClassNotFoundException, NoSuchAlgorithmException, InvalidKeyException 元の(カプセル化された)オブジェクトを取り出します。このメソッドは、シール操作で使用されたアルゴリズムの暗号を作成します。 デフォルトのプロバイダ・パッケージがそのアルゴリズムの実装を提供する場合は、その実装を含む
Cipher
オブジェクトが使用されます。 指定されたアルゴリズムがデフォルトのパッケージで使用可能でない場合は、ほかのパッケージが検索されます。Cipher
オブジェクトは、指定されたkey
およびシール操作で使用されていたパラメータ(もしあれば)を使用して、復号化用に初期化されます。カプセル化されたオブジェクトは、シールと直列化を解除してから返されます。
- パラメータ:
key
- オブジェクトをシール解除するのに使用するキー。- 戻り値:
- 元のオブジェクト
- 例外:
IOException
- 直列化復元でエラーが発生した場合ClassNotFoundException
- 直列化復元でエラーが発生した場合NoSuchAlgorithmException
- オブジェクトをシール解除するアルゴリズムがない場合。InvalidKeyException
- アルゴリズムが間違っている場合など、指定されたキーを使用してオブジェクトをシール解除できない場合。NullPointerException
-key
がnullである場合。
-
getObject
public final Object getObject(Cipher c) throws IOException, ClassNotFoundException, IllegalBlockSizeException, BadPaddingException 元の(カプセル化された)オブジェクトを取り出します。カプセル化されたオブジェクトは、戻される前に(指定された
Cipher
オブジェクトを使用して、Cipher
オブジェクトがすでに適切に初期化されていることを前提としています)のシールが解除され、直列化解除されます。- パラメータ:
c
- オブジェクトをシール解除するのに使用される暗号- 戻り値:
- 元のオブジェクト
- 例外:
NullPointerException
- 指定された暗号がnull
の場合。IOException
- 直列化復元でエラーが発生した場合ClassNotFoundException
- 直列化復元でエラーが発生した場合IllegalBlockSizeException
- 指定された暗号がブロック暗号であり、パディングが要求されておらず、入力長の合計が暗号のブロック・サイズの倍数でない場合BadPaddingException
- 指定された暗号が復号化用に初期化されており、パディングが指定されているが、入力データに適切な予期されるパディング・バイトがない場合
-
getObject
public final Object getObject(Key key, String provider) throws IOException, ClassNotFoundException, NoSuchAlgorithmException, NoSuchProviderException, InvalidKeyException 元の(カプセル化された)オブジェクトを取り出します。このメソッドは、シール操作に使用されたアルゴリズムの暗号を、指定された
provider
からそのアルゴリズムの実装を使用して作成します。Cipher
オブジェクトは、指定されたkey
およびシール操作で使用されていたパラメータ(もしあれば)を使用して、復号化用に初期化されます。カプセル化されたオブジェクトは、シールと直列化を解除してから返されます。
- パラメータ:
key
- オブジェクトをシール解除するのに使用するキー。provider
- オブジェクトをシール解除するアルゴリズムのプロバイダ名。- 戻り値:
- 元のオブジェクト
- 例外:
IllegalArgumentException
- 指定されたプロバイダがnull
または空の場合。IOException
- 直列化復元でエラーが発生した場合ClassNotFoundException
- 直列化復元でエラーが発生した場合NoSuchAlgorithmException
- オブジェクトをシール解除するアルゴリズムがない場合。NoSuchProviderException
- 指定されたプロバイダが設定されていない場合。InvalidKeyException
- アルゴリズムが間違っている場合など、指定されたキーを使用してオブジェクトをシール解除できない場合。NullPointerException
-key
がnullである場合。
-