JavaTM 2 Platform
Standard Ed. 6

javax.crypto
類別 SealedObject

java.lang.Object
  繼承者 javax.crypto.SealedObject
所有已實作的介面:
Serializable

public class SealedObject
extends Object
implements Serializable

此類別使開發人員能夠用加密演算法創建對象並保護其機密性。

在給定任何 Serializable 物件的情況下,開發人員可以序列化格式(即“深層複製”)封裝原始物件的 SealedObject,並使用 DES 一類別的加密演算法密封(加密)其序列化的內容,以保護其機密性。加密的內容以後可以解密(使用相應的演算法和正確的解密密鑰)和反序列化,並產生原始物件。

注意,該 Cipher 物件在應用於 SealedObject 之前必須使用正確的演算法、密鑰、填充方案等進行完全初始化。

已密封的原始對象可以用以下兩種不同的方式恢復:

從以下版本開始:
1.4
另請參見:
Cipher, 序列化表格

欄位摘要
protected  byte[] encodedParams
          由密封 Cipher 使用的加密參數,以預設格式進行編碼。
 
建構子摘要
protected SealedObject(SealedObject so)
          根據傳入的 SealedObject 建構一個 SealedObject 物件。
  SealedObject(Serializable object, Cipher c)
          從任何 Serializable 物件建構一個 SealedObject。
 
方法摘要
 String getAlgorithm()
          返回用於密封此物件的演算法。
 Object getObject(Cipher c)
          獲取原始(封裝的)物件。
 Object getObject(Key key)
          獲取原始(封裝的)物件。
 Object getObject(Key key, String provider)
          獲取原始(封裝的)物件。
 
從類別 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

public final Object getObject(Key key)
                       throws IOException,
                              ClassNotFoundException,
                              NoSuchAlgorithmException,
                              InvalidKeyException
獲取原始(封裝的)物件。

此方法為密封操作中已使用的演算法創建一個密碼。如果預設提供者包提供該演算法的一個實作,則使用一個套件含該實作的 Cipher 實例。如果在預設的套件中未提供該演算法,則將搜尋其他的套件。使用給定的 key 和密封操作中已使用的參數(如果有)初始化用於解密的 Cipher 物件。

在返回已封裝的物件之前將其解封和反序列化。

參數:
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 中的演算法的實作,為密封操作中已使用的此演算法創建一個密碼。使用給定的 key 和密封操作中已使用的參數(如果有)初始化用於解密的 Cipher 物件。

返回已封裝的物件之前將其解封和反序列化。

參數:
key - 用於解封物件的密鑰。
provider - 要解封物件的演算法的提供者名稱。
返回:
原始物件。
拋出:
IllegalArgumentException - 如果給定提供者為 null 或空。
IOException - 如果在反序列化過程中發生錯誤。
ClassNotFoundException - 如果在反序列化過程中發生錯誤。
NoSuchAlgorithmException - 如果解封物件的演算法不可用。
NoSuchProviderException - 如果未配置給定提供者。
InvalidKeyException - 如果無法使用給定密鑰解封物件(例如其演算法錯誤)。
NullPointerException - 如果 key 為 null。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only