|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.security.SignedObject
public final class SignedObject
SignedObject 是一個用來創建實際運行時物件的類別,在檢測不到這些物件的情況下,其完整性不會遭受損害。
更明確地說,SignedObject 套件含另外一個 Serializable 物件,即(要)簽章的物件及其簽章。
簽章物件是對原始物件的“深層複製”(以序列化形式)。一旦產生了副本,對原始物件的進一步操作就不再影響該副本。
底層簽章演算法是由傳遞給建構子和 verify
方法的 Signature 物件指定。下面是簽章的典型用法:
Signature signingEngine = Signature.getInstance(algorithm,
provider);
SignedObject so = new SignedObject(myobject, signingKey,
signingEngine);
下面是對驗證的典型用法(已接收到 SignedObject so
):
Signature verificationEngine =
Signature.getInstance(algorithm, provider);
if (so.verify(publickey, verificationEngine))
try {
Object myobj = so.getObject();
} catch (java.lang.ClassNotFoundException e) {};
以下幾點需要注意。首先,不需要初始化簽章或驗證引擎,因為它將在建構子和 verify
方法中被重新初始化。其次,為了成功驗證,指定的公鑰必須是與用來產生 SignedObject 的私鑰對應的公鑰。
更為重要的是,出於靈活性考慮,建構子和 verify
方法允許使用自定義的簽章引擎,這樣可以實作未作為加密提供者一部分正常安裝的簽章演算法。不過,程式人員編寫知道使用什麼 Signature
引擎的校驗器程式碼至關重要,因為將調用它自己的 verify
方法的實作來驗證簽章。換句話說,惡意 Signature
在嘗試繞過安全檢查的驗證中會選擇始終返回 true。
在所有演算法中,簽章演算法可以是使用 DSA 和 SHA-1 的 NIST 標準 DSA。該演算法使用與簽章慣例相同的慣例來指定。例如,可以將使用 SHA-1 訊息分類別演算法的 DSA 演算法指定為 "SHA/DSA" 或 "SHA-1/DSA"(它們是等效的)。如果使用 RSA 標準,訊息分類別演算法將有多種選擇,例如,可將簽章演算法指定為 "MD2/RSA"、"MD5/RSA" 或 "SHA-1/RSA"。沒有預設的演算法名稱,所以必須為其指定名稱。
Cryptography Package Provider 的名稱也是由建構子和 verify
方法的 Signature 參數指定的。如果未指定提供者,則使用預設的提供者。每種安裝都可以配置為將特定的提供者作為預設提供者。
SignedObject 可能的應用領域包括:
Signature
,
序列化表格建構子摘要 | |
---|---|
SignedObject(Serializable object,
PrivateKey signingKey,
Signature signingEngine)
通過任何可序列化物件建構 SignedObject。 |
方法摘要 | |
---|---|
String |
getAlgorithm()
獲取簽章演算法的名稱。 |
Object |
getObject()
獲取已封裝的物件。 |
byte[] |
getSignature()
在已簽章物件上按 byte 陣列的形式獲取簽章。 |
boolean |
verify(PublicKey verificationKey,
Signature verificationEngine)
使用指派的驗證引擎,通過給定的驗證密鑰驗證此 SignedObject 中的簽章是否為內部存儲物件的有效簽章。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
建構子詳細資訊 |
---|
public SignedObject(Serializable object, PrivateKey signingKey, Signature signingEngine) throws IOException, InvalidKeyException, SignatureException
object
- 要簽章的物件。signingKey
- 用於簽章的私鑰。signingEngine
- 用於簽章的簽章引擎。
IOException
- 如果在序列化期間發生錯誤
InvalidKeyException
- 如果密鑰無效。
SignatureException
- 如果簽章失敗。方法詳細資訊 |
---|
public Object getObject() throws IOException, ClassNotFoundException
IOException
- 如果在反序列化期間發生錯誤
ClassNotFoundException
- 如果在反序列化期間發生錯誤public byte[] getSignature()
public String getAlgorithm()
public boolean verify(PublicKey verificationKey, Signature verificationEngine) throws InvalidKeyException, SignatureException
verificationKey
- 用於驗證的公鑰。verificationEngine
- 簽章驗證引擎。
SignatureException
- 如果簽章驗證失敗。
InvalidKeyException
- 如果驗證密鑰無效。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。