|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.security.SignatureSpi java.security.Signature
public abstract class Signature
此 Signature 類別用來為應用程序提供數位簽章演算法功能。數位簽章用於確保數字資料的驗證和完整性。
在所有演算法當中,數位簽章可以是 NIST 標準的 DSA,它使用 DSA 和 SHA-1。可以將使用 SHA-1 訊息摘要演算法的 DSA 演算法指定為 SHA1withDSA。如果使用 RSA,對訊息摘要演算法則會有多種選擇,因此,可以將簽章演算法指定為 MD2withRSA、MD5withRSA 或 SHA1withRSA。因為沒有預設的演算法名稱,所以必須為其指定名稱。
Signature 物件可用來產生和驗證數位簽章。
使用 Signature 物件簽章資料或驗證簽章包括以下三個階段:
initVerify
),或使用
initSign(PrivateKey)
和 initSign(PrivateKey, SecureRandom)
)。
根據初始化型別,這可更新要簽章或驗證的位元組。請參見 update
方法。
sign
方法和 verify
方法。
注意,由於歷史原因,此類別是從 SignatureSpi
中抽象出來的,並進行了擴展。應用程序開發人員只需注意在此 Signature
類別中定義的方法即可;父級類別中的所有方法都是供那些希望提供自己的數位簽章演算法實作的加密服務提供者使用的。
欄位摘要 | |
---|---|
protected static int |
SIGN
可能的 state 值,表示此簽章物件已經初始化簽章。 |
protected int |
state
此簽章物件的當前狀態。 |
protected static int |
UNINITIALIZED
可能的 state 值,表示尚未初始化此簽章物件。 |
protected static int |
VERIFY
可能的 state 值,表示此簽章物件已經初始化驗證。 |
從類別 java.security.SignatureSpi 繼承的欄位 |
---|
appRandom |
建構子摘要 | |
---|---|
protected |
Signature(String algorithm)
創建指定演算法的 Signature 物件。 |
方法摘要 | |
---|---|
Object |
clone()
如果此實作可以複製,則返回副本。 |
String |
getAlgorithm()
返回此簽章物件的演算法名稱。 |
static Signature |
getInstance(String algorithm)
返回實作指定簽章演算法的 Signature 物件。 |
static Signature |
getInstance(String algorithm,
Provider provider)
返回實作指定簽章演算法的 Signature 物件。 |
static Signature |
getInstance(String algorithm,
String provider)
返回實作指定簽章演算法的 Signature 物件。 |
Object |
getParameter(String param)
已過時。 |
AlgorithmParameters |
getParameters()
返回與此簽章物件一起使用的參數。 |
Provider |
getProvider()
返回此簽章物件的提供者。 |
void |
initSign(PrivateKey privateKey)
初始化這個用於簽章的物件。 |
void |
initSign(PrivateKey privateKey,
SecureRandom random)
初始化這個用於簽章的物件。 |
void |
initVerify(Certificate certificate)
使用來自給定證書的公鑰初始化此用於驗證的物件。 |
void |
initVerify(PublicKey publicKey)
初始化此用於驗證的物件。 |
void |
setParameter(AlgorithmParameterSpec params)
使用指定的參數集初始化此簽章引擎。 |
void |
setParameter(String param,
Object value)
已過時。 使用 setParameter 取代。 |
byte[] |
sign()
返回所有已更新資料的簽章位元組。 |
int |
sign(byte[] outbuf,
int offset,
int len)
完成簽章操作並從 offset 開始,將得到的簽章位元組存儲在提供的緩衝區 outbuf 中。 |
String |
toString()
返回此簽章物件的字元串表示形式,以提供包括物件狀態和所用演算法名稱在內的資訊。 |
void |
update(byte b)
更新要由位元組簽章或驗證的資料。 |
void |
update(byte[] data)
使用指定的 byte 陣列更新要簽章或驗證的資料。 |
void |
update(byte[] data,
int off,
int len)
從指定的偏移量開始,使用指定的 byte 陣列更新要簽章或驗證的資料。 |
void |
update(ByteBuffer data)
使用指定的 ByteBuffer 更新要簽章或驗證的資料。 |
boolean |
verify(byte[] signature)
驗證傳入的簽章。 |
boolean |
verify(byte[] signature,
int offset,
int length)
從指定的偏移量開始,驗證指定的 byte 陣列中傳入的簽章。 |
從類別 java.lang.Object 繼承的方法 |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
欄位詳細資訊 |
---|
protected static final int UNINITIALIZED
state
值,表示尚未初始化此簽章物件。
protected static final int SIGN
state
值,表示此簽章物件已經初始化簽章。
protected static final int VERIFY
state
值,表示此簽章物件已經初始化驗證。
protected int state
建構子詳細資訊 |
---|
protected Signature(String algorithm)
algorithm
- 演算法的標準字元串名稱。有關標準演算法名稱的資訊,請參閱 Java Cryptography Architecture API Specification & Reference 中的附錄 A。方法詳細資訊 |
---|
public static Signature getInstance(String algorithm) throws NoSuchAlgorithmException
此方法從首選的提供者開始遍歷已註冊安全提供者列表。返回封裝 SignatureSpi 實作的新 Signature 物件,該實作取自第一個支持指定演算法的 Provider。
注意,可以通 Security.getProviders()
方法獲取已註冊提供者列表。
algorithm
- 所請求演算法的標準名稱。有關標準演算法名稱的資訊,請參閱
Java Cryptography Architecture API Specification & Reference 中的附錄 A。
NoSuchAlgorithmException
- 如果沒有 Provider 支持指定演算法的 Signature 實作。Provider
public static Signature getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
返回封裝 SignatureSpi 實作的新 Signature 物件,該實作取自指定提供者。指定的提供者必須在安全提供者列表中註冊。
注意,可以通過 Security.getProviders()
方法獲取已註冊提供者列表。
algorithm
- 所請求演算法的標準名稱。有關標準演算法名稱的資訊,請參閱
Java Cryptography Architecture API Specification & Reference 中的附錄 A。provider
- 提供者的名稱。
NoSuchAlgorithmException
- 如果指定演算法的 SignatureSpi 實作不能從指定提供者獲得。
NoSuchProviderException
- 如果指定提供者未在安全提供者列表中註冊。
IllegalArgumentException
- 如果提供者的名稱為 null 或空。Provider
public static Signature getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
返回封裝 SignatureSpi 實作的新 Signature 物件,該實作取自指定 Provider 物件。注意,指定 Provider 物件無需在提供者列表中註冊。
algorithm
- 所請求演算法的標準名稱。有關標準演算法名稱的資訊,請參閱
Java Cryptography Architecture API Specification & Reference 中的附錄 A。provider
- 提供者。
NoSuchAlgorithmException
- 如果指定演算法的 SignatureSpi 實作不能從指定提供者物件獲得。
IllegalArgumentException
- 如果 provider 為 null。Provider
public final Provider getProvider()
public final void initVerify(PublicKey publicKey) throws InvalidKeyException
publicKey
- 將驗證其簽章的標識的公鑰。
InvalidKeyException
- 如果密鑰無效。public final void initVerify(Certificate certificate) throws InvalidKeyException
如果證書是 X.509 型別且具有標記為重要的 key usage 擴展欄位,並且 key usage 擴展欄位的值暗示著證書中的公鑰及其對應的私鑰不允許用於數位簽章,則拋出 InvalidKeyException
。
certificate
- 將驗證其簽章的標識的證書。
InvalidKeyException
- 如果證書中的公鑰未被正確解碼,或者未包括所請求的參數資訊,或者不能用於數位簽章。public final void initSign(PrivateKey privateKey) throws InvalidKeyException
privateKey
- 將產生其簽章的標識的私鑰。
InvalidKeyException
- 如果密鑰無效。public final void initSign(PrivateKey privateKey, SecureRandom random) throws InvalidKeyException
privateKey
- 將產生其簽章的標識的私鑰。random
- 此簽章的隨機源。
InvalidKeyException
- 如果密鑰無效。public final byte[] sign() throws SignatureException
對此方法的調用將把此簽章物件重新設置到以前為進行簽章而通過調用 initSign(PrivateKey)
對其初始化時的狀態。也就是說,如果需要,通過重新調用 update
和 sign
,可重新設置物件,並且可以通過它從同一個簽署者中產生其他人的簽章。
SignatureException
- 如果此簽章物件未得到正確初始化,或者此簽章演算法不能處理所提供的輸入資料。public final int sign(byte[] outbuf, int offset, int len) throws SignatureException
offset
開始,將得到的簽章位元組存儲在提供的緩衝區 outbuf
中。簽章的格式取決於基礎簽章方案。
此簽章物件將被重新設置到其初始狀態(對其中的一種 initSign
方法調用之後所處的狀態),並且可重新使用此簽章物件,用同一個私鑰產生將來的簽章。
outbuf
- 輸出簽章結果的緩衝區。offset
- 到存儲簽章的 outbuf
的偏移量。len
- outbuf
中分派給簽章的位元組數。
outbuf
中的位元組數。
SignatureException
- 如果此簽章物件未得到正確初始化,如果此簽章演算法無法處理所提供的輸入資料,或者 len
少於實際簽章長度。public final boolean verify(byte[] signature) throws SignatureException
對此方法的調用將把此簽章物件重新設置到以前為進行驗證而通過調用 initVerify(PublicKey)
對其初始化時的狀態。也就是說,該物件將被重新設置,並且可以用來驗證調用 initVerify
時其公鑰所指定的標識中的其他簽章。
signature
- 要驗證的簽章位元組。
SignatureException
- 如果此簽章物件未得到正確初始化,傳入的簽章未得到正確解碼,或型別錯誤,如果此簽章演算法不能處理所提供的輸入資料等。public final boolean verify(byte[] signature, int offset, int length) throws SignatureException
對此方法的調用將把此簽章物件重新設置到以前為進行驗證而通過調用 initVerify(PublicKey)
對其初始化時的狀態。也就是說,該物件將被重新設置,並且可以用來驗證調用 initVerify
時其公鑰所指定的標識中的其他簽章。
signature
- 要驗證的簽章位元組。offset
- byte 陣列中起始處的偏移量。length
- 要使用的位元組數(從偏移量起始處算起)。
SignatureException
- 如果此簽章物件未得到正確初始化,傳入的簽章未得到正確解碼,或者型別錯誤,如果此簽章演算法無法處理所提供的輸入資料等。
IllegalArgumentException
- 如果 signature
byte 陣列為 null,或者 offset
或 length
小於 0,或者 offset
與 length
的和大於 signature
byte 陣列的長度。public final void update(byte b) throws SignatureException
b
- 用於更新的位元組。
SignatureException
- 如果此簽章物件未得到正確初始化。public final void update(byte[] data) throws SignatureException
data
- 用於更新的 byte 陣列。
SignatureException
- 如果此簽章物件未得到正確初始化。public final void update(byte[] data, int off, int len) throws SignatureException
data
- byte 陣列。off
- 到 byte 陣列開始處的偏移量。len
- 要使用的位元組數,從偏移量起始處算起。
SignatureException
- 如果此簽章物件未得到正確初始化。public final void update(ByteBuffer data) throws SignatureException
data.position()
處開始的 data.remaining()
位元組。返回時,緩衝區的位置將等於其限制;其限制並未改變。
data
- ByteBuffer
SignatureException
- 如果此簽章物件未得到正確初始化。public final String getAlgorithm()
public String toString()
Object
中的 toString
@Deprecated public final void setParameter(String param, Object value) throws InvalidParameterException
setParameter
取代。
param
- 參數的字元串標示符。value
- 參數值。
InvalidParameterException
- 如果 param
是此演算法引擎的無效參數,或者已經設置參數並且不能重新設置,或者出現了安全異常等等。getParameter(java.lang.String)
public final void setParameter(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
params
- 參數
InvalidAlgorithmParameterException
- 如果給定的參數不適合此簽章引擎getParameters()
public final AlgorithmParameters getParameters()
返回的參數可能與用來初始化此簽章的參數相同;如果此簽章需要演算法參數但卻未使用任何參數進行初始化,則返回的參數可能會包含由底層簽章實作所使用的預設值和隨機產生的參數值的組合。
setParameter(AlgorithmParameterSpec)
@Deprecated public final Object getParameter(String param) throws InvalidParameterException
param
- 參數的字元串名稱。
InvalidParameterException
- 如果 param
是此引擎的無效參數,或者嘗試獲取此參數時出現其他異常。setParameter(String, Object)
public Object clone() throws CloneNotSupportedException
SignatureSpi
中的 clone
CloneNotSupportedException
- 如果調用一個不支持 Cloneable
的實作。Cloneable
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。