|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.crypto.SealedObject
public class SealedObject
此類別使開發人員能夠用加密演算法創建對象並保護其機密性。
在給定任何 Serializable 物件的情況下,開發人員可以序列化格式(即“深層複製”)封裝原始物件的 SealedObject,並使用 DES 一類別的加密演算法密封(加密)其序列化的內容,以保護其機密性。加密的內容以後可以解密(使用相應的演算法和正確的解密密鑰)和反序列化,並產生原始物件。
注意,該 Cipher 物件在應用於 SealedObject 之前必須使用正確的演算法、密鑰、填充方案等進行完全初始化。
已密封的原始對象可以用以下兩種不同的方式恢復:
Cipher
物件的 getObject
方法。
此方法需要一個完全初始化的 Cipher
物件,用極其相同、用來密封物件的演算法、密鑰、填充方案等進行初始化。
這樣做的好處是解封密封物件的一方不需要知道解密密鑰。例如,一方用所需的解密密鑰初始化 cipher 物件之後,它就會將 cipher 物件移交給以後要解封密封物件的另一方。
Key
物件的 getObject
方法。
在此方法中,getObject
方法創建一個用於適當解密演算法的 cipher 物件,並用給定的解密密鑰和存儲在密封物件中的演算法參數(如果有)對其進行初始化。
這樣做的好處是解封此物件的一方不需要追蹤用來密封該物件的參數(如 IV)。
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 |
欄位詳細資訊 |
---|
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 實例。如果在預設的套件中未提供該演算法,則將搜尋其他的套件。使用給定的 key
和密封操作中已使用的參數(如果有)初始化用於解密的 Cipher 物件。
在返回已封裝的物件之前將其解封和反序列化。
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
中的演算法的實作,為密封操作中已使用的此演算法創建一個密碼。使用給定的 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。