public class SealedObject extends Object implements Serializable
Serializable オブジェクトを指定すると、元のオブジェクトを直列化形式 (つまり「ディープコピー」) でカプセル化して、直列化されたコンテンツをシール (暗号化) し、DES などの暗号化アルゴリズムを使用してその機密を保護する SealedObject を作成できます。その後、暗号化された内容の暗号解読 (適正な暗号解読鍵を使用)、および直列化解除を行うことにより、元のオブジェクトを復元できます。
Cipher オブジェクトは、正しいアルゴリズム、鍵、パディング方式などで完全に初期化してから SealedObject に適用する必要があります。
シールされた元のオブジェクトは、次の異なる 2 つの方法で復元可能です。
Cipher
オブジェクトをとる getObject
メソッドを使用する。
このメソッドは、オブジェクトをシールするのに使用したのとまったく同じアルゴリズム、鍵、パディング方式などで完全に初期化された Cipher
オブジェクトを必要とします。
この方法には、暗号解読鍵に関する知識がなくても、シールされたオブジェクトのアンシールを実行できるという利点があります。たとえば、あるパーティーが暗号オブジェクトを必須の暗号解読鍵を使って初期化したあとで、別のパーティーに渡すと、そのパーティーはシールされたオブジェクトをアンシールできます。
Key
オブジェクトをとる getObject
メソッドの 1 つを使用する。
この方法では、getObject
メソッドは、適切な暗号解読アルゴリズム用の暗号オブジェクトを作成し、シール済みのオブジェクトに格納された特定の暗号解読鍵およびアルゴリズムパラメータ (存在する場合) を使用してそれを初期化します。
この方式には、オブジェクトをシール解除する当事者はオブジェクトをシールするのに使用されたパラメータ (たとえば、IV) を追跡する必要がないという利点があります。
修飾子と型 | フィールドと説明 |
---|---|
protected byte[] |
encodedParams
シールする暗号によって使用される、デフォルトの形式でエンコードされた暗号化パラメータです。
|
修飾子 | コンストラクタと説明 |
---|---|
protected |
SealedObject(SealedObject so)
渡された SealedObject オブジェクトから SealedObject オブジェクトを構築します。
|
|
SealedObject(Serializable object, Cipher c)
任意の Serializable オブジェクトから SealedObject を構築します。
|
protected byte[] encodedParams
つまり、cipher.getParameters().getEncoded()
です。
public SealedObject(Serializable object, Cipher c) throws IOException, IllegalBlockSizeException
指定されたオブジェクトは直列化され、その直列化されたコンテンツは、完全に初期化された、指定された Cipher を使用して暗号化されます。
暗号化操作で使用される可能性のあるアルゴリズムパラメータは、新しい SealedObject
の内部に格納されます。
object
- シールするオブジェクト。null も可。c
- オブジェクトをシールするのに使用される暗号。NullPointerException
- 指定された暗号が null の場合。IOException
- 直列化でエラーが発生した場合IllegalBlockSizeException
- 指定された暗号がブロック暗号であり、パディングが要求されておらず、入力長の合計 (つまり、直列化されたオブジェクトのコンテンツの長さ) が暗号のブロックサイズの倍数でない場合protected SealedObject(SealedObject so)
so
- SealedObject オブジェクトNullPointerException
- 指定されたオブジェクトが null の場合。public final String getAlgorithm()
public final Object getObject(Key key) throws IOException, ClassNotFoundException, NoSuchAlgorithmException, InvalidKeyException
このメソッドは、シール操作で使用されたアルゴリズムの暗号を作成します。デフォルトのプロバイダパッケージがそのアルゴリズムを実装する場合は、その実装を含む Cipher のインスタンスが使用されます。指定されたアルゴリズムがデフォルトのパッケージで使用可能でない場合は、ほかのパッケージが検索されます。Cipher オブジェクトは、指定された key
と、シール操作に使用されたパラメータ (もしあれば) を使用して、復号化用に初期化されます。
カプセル化されたオブジェクトは、シールと直列化を解除してから返されます。
key
- オブジェクトをシール解除するのに使用する鍵。IOException
- 直列化解除でエラーが発生した場合。ClassNotFoundException
- 直列化解除でエラーが発生した場合。NoSuchAlgorithmException
- オブジェクトをシール解除するアルゴリズムがない場合。InvalidKeyException
- アルゴリズムが間違っている場合など、指定された鍵を使用してオブジェクトをシール解除できない場合。NullPointerException
- key
が null である場合。public final Object getObject(Cipher c) throws IOException, ClassNotFoundException, IllegalBlockSizeException, BadPaddingException
カプセル化されたオブジェクトは、Cipher がすでに適切に初期化されていることを前提として、指定された Cipher を使用してシール解除され、直列化解除されてから返されます。
c
- オブジェクトをシール解除するのに使用される暗号NullPointerException
- 指定された暗号が null の場合。IOException
- 直列化解除でエラーが発生した場合ClassNotFoundException
- 直列化解除でエラーが発生した場合IllegalBlockSizeException
- 指定された暗号がブロック暗号であり、パディングが要求されておらず、入力長の合計が暗号のブロックサイズの倍数でない場合BadPaddingException
- 指定された暗号が復号化用に初期化されており、パディングが指定されているが、入力データに適切な予期されるパディングバイトがない場合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 である場合。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.