当前位置 类层次 (JDK) 所有类 (JDK) 所有域和方法 (JDK)

类 java.security.Signature

java.lang.Object
   |
   +----java.security.Signature

public abstract class Signature
extends Object

Signature 用于提供数字签名算法的功能,例如 RSA 和 MD5 或者 DSA。 数字签名用于数字数据的认证和完整性保证。

象 Java 安全性中的其它基于算法的类一样,Signature 类有两个主要的组件:

数字签名 API ( 应用程序接口 )
这是需要数字签名服务的应用调用的方法的接口。 API 由所有公有方法组成。
数字签名 SPI ( 服务提供者接口 )
该接口是由提供特定算法的提供者实现的接口。它由所有名字前缀为 engine 的方法组成。 每个这样的方法由具有相应名字的公有 API 方法调用。例如,engineSign 方法由 sign 方法调用。SPI 方法是抽象的;提供者必须提供一个具体的实现。

同其它 Java 安全性中基于算法的类一样,Signature 提供了独立于实现的算法,一个调用者(应用代码)可由此申请一个特定的签名算法,并返回一个被正确初始化的 Signature 对象。如果需要的话,也可以向一个特定的提供者申请一个特定的算法。参见 getInstance 方法。

所以有两种申请 Signature 对象的方式:只指定一个算法名,或者指定一个算法名和一个包提供者。

一个 Signature 对象可以用于生成和验证数字签名。

使用 Signature 对象对数据进行签名或对签名进行验证有三个阶段:

  1. 用以下数据进行初始化

  2. 修改

    根据初始化类型,它将修改被签名或验证的字节。参见 update 方法。

  3. 签名或验证

    一个对所有修改字节的签名。参见 signverify


变量索引

SIGN
可能的 state 值,指明该签名对象为签名进行了初始化。
state
该签名对象的当前状态。
UNINITIALIZED
可能的 state 值,指明该签名对象还没有进行初始化。
VERIFY
可能的 state 值,指明该签名对象为验证进行了初始化。

构造子索引

Signature(String)
为指定的算法创建一个 Signature 对象。

方法索引

clone()
如果实现是可复制的,返回一个复制。
engineGetParameter(String)
SPI:获得指定算法的参数值。
engineInitSign(PrivateKey)
SPI:用指定的私有密钥为签名操作初始化该签名对象。
engineInitVerify(PublicKey)
SPI:用指定的公有密钥为验证操作初始化该签名对象。
engineSetParameter(String, Object)
SPI:将指定的算法参数设置为指定的值。
engineSign()
SPI:返回目前被修改的所有数据的签名字节。
engineUpdate(byte)
SPI:修改用指定的字节进行签名或验证的数据。
engineUpdate(byte[], int, int)
SPI:修改用起始于指定偏移量的指定数组签名或验证的数据。
engineVerify(byte[])
SPI:验证传入的签名。
getAlgorithm()
返回这个签名对象的算法名称。
getInstance(String)
生成一个 Signature 对象,它实现指定的算法。
getInstance(String, String)
生成一个实现指定算法的 Signature 对象,如果指定的提供者的算法是可用的,那么该算法由该提供者提供。
getParameter(String)
获得指定算法的参数值。
initSign(PrivateKey)
为签名初始化该对象。
initVerify(PublicKey)
为验证初始化该对象。
setParameter(String, Object)
将指定的算法参数设置为指定的值。
sign()
返回所有被修改的数据的签名字节。
toString()
返回该签名对象的一个字符串表示,它提供的信息包括对象的状态和使用的算法的名称。
update(byte)
修改用指定的字节进行签名或验证的数据。
update(byte[])
修改用指定的字节数组进行签名或验证的数据。
update(byte[], int, int)
修改用指定的字节数组进行签名或验证的数据,从数组指定的偏移量开始。
verify(byte[])
验证传入的签名。

变量

UNINITIALIZED
 protected static final int UNINITIALIZED
可能的 state 值,指明该签名对象还没有进行初始化。

SIGN
 protected static final int SIGN
可能的 state 值,指明该签名对象为签名进行了初始化。

VERIFY
 protected static final int VERIFY
可能的 state 值,指明该签名对象为验证进行了初始化。

state
 protected int state
该签名对象的当前状态。


构造子

Signature
 protected Signature(String algorithm)
为指定的算法创建一个 Signature 对象。

参数:
algorithm - 算法的标准字符串名。

方法

getInstance
 public static Signature getInstance(String algorithm) throws NoSuchAlgorithmException
生成一个 Signature 对象,它实现指定的算法。 如果缺省的提供者包包含的一个 Signature 子类实现了该算法,返回该子类的一个实例。 如果算法在缺省包中是不可用的,将搜索其它的包。

参数:
algorithm - 申请的算法的标准名称。
返回值:
新建的 Signature 对象。
抛出: NoSuchAlgorithmException
如果算法在环境中是不可用的。
getInstance
 public static Signature getInstance(String algorithm,
                                     String provider) throws NoSuchAlgorithmException, NoSuchProviderException
生成一个实现指定算法的 Signature 对象,如果指定的提供者的算法是可用的,那么该算法由该提供者提供。

参数:
algorithm - 申请的算法的名称。
provider - 提供者的名字。
返回值:
新建的 Signature 对象。
抛出: NoSuchAlgorithmException
如果算法在申请的调用者提供的包中是不可用的。
抛出: NoSuchProviderException
如果提供者在环境中是不可用的。
参见:
Provider
initVerify
 public final void initVerify(PublicKey publicKey) throws InvalidKeyException
为验证初始化该对象。 如果用不同的参数再次调用该方法,它将取消本次调用的结果。

参数:
publicKey - 身份的公共密钥,将验证该身份的签名。
抛出: InvalidKeyException
如果密钥是无效的。
initSign
 public final void initSign(PrivateKey privateKey) throws InvalidKeyException
为签名初始化该对象。 如果用不同的参数再次调用该方法,它将取消本次调用的结果。

参数:
privateKey - 身份的公共密钥,将生成该身份的签名。
抛出: InvalidKeyException
如果密钥是无效的。
sign
 public final byte[] sign() throws SignatureException
返回所有被修改的数据的签名字节。 返回的签名是 X.509 编码。

调用该方法将该签名算法复位成以前为签名初始化的状态,当时是通过调用 initSign(PrivateKey) 进行初始化的。即,该对象被复位,而且如果需要的话,可以通过调用 updatesign 方法为同一个签名者生成另一个签名。

返回值:
作为签名操作的结果的签名字节。
抛出: SignatureException
如果没有正确地初始化该签名。
verify
 public final boolean verify(byte signature[]) throws SignatureException
验证传入的签名。 签名字节是 X.509 编码。

调用该方法将该签名算法复位成前一次为验证初始化的状态,当时是通过调用 initVerify(PrivateKey) 进行初始化的。 即,该对象被复位,并且可以验证另一个身份的签名,该身份的公共密钥是通过调用 initVerify 指定的。

参数:
signature - 要验证的签名字节。
返回值:
如果验证了签名则为 true,如果没有则为 false。
抛出: SignatureException
如果没有正确地初始化签名对象,或者传入的签名的编码错误或类型错误。
update
 public final void update(byte b) throws SignatureException
修改用指定的字节进行签名或验证的数据。

参数:
b - 用于修改的字节。
抛出: SignatureException
如果没有正确地初始化该签名。
update
 public final void update(byte data[]) throws SignatureException
修改用指定的字节数组进行签名或验证的数据。

参数:
data - 用于修改的字节数组。
抛出: SignatureException
如果没有正确地初始化该签名。
update
 public final void update(byte data[],
                                int off,
                          int len) throws SignatureException
修改用起始于指定偏移量的指定数组签名或验证的数据。

参数:
data - 该字节数组。
off - 字节数组中开始的偏移量。
len - 从偏移量开始用的字节数。
抛出: SignatureException
如果没有正确地初始化该签名。
getAlgorithm
 public final String getAlgorithm()
返回这个签名对象的算法名称。

返回值:
这个签名对象的算法名称。
toString
 public String toString()
返回该签名对象的一个字符串表示,提供的信息包括对象的状态和使用的算法的名称。

返回值:
该签名对象的字符串表示。
覆盖:
Object 中的 toString
setParameter
 public final void setParameter(String param,
                                Object value) throws InvalidParameterException
将指定的算法参数设置为指定的值。 该方法提供了一个通用的机制,通过它可以设置该对象的不同参数。算法的参数是可以设定的,例如参数的尺寸,或用于生成签名的随机数源 ( 如果是恰当的 ),或是否执行特定的而非任意的计算的一个指示。需要一个一致的,算法特定的参数命名体系,但是现在还没有制定。

参数:
param - 参数的字符串标识符。
value - 参数值。
抛出: InvalidParameterException
如果 param 对该签名算法引擎是一个无效的参数,或参数已经被设置,不能再次设置,或发生一个安全性异常,等等。
getParameter
 public final Object getParameter(String param) throws InvalidParameterException
获得指定算法的参数值。 该方法提供了一个通用的机制,通过它可以获得该对象的不同参数。 一个参数可以是算法的任何可设置的参数,例如参数的尺寸,或签名生成器的随机数源 ( 如果是恰当的 ),或指明是否执行特定的而非任意的计算的一个指示。需要一个一致的,算法特定的参数命名体系,但是现在还没有制定。

参数:
param - 参数的字符串名。
返回值:
表示该参数值的对象,如果没有值则为 null。
抛出: InvalidParameterException
如果 param 对该引擎是一个无效的参数,或者当试图获得该参数时发生了另一个异常。
engineInitVerify
 protected abstract void engineInitVerify(PublicKey publicKey) throws InvalidKeyException
SPI:用指定的公有密钥为验证操作初始化该签名对象。

参数:
publicKey - 身份的公共密钥,将验证该身份的签名。
抛出: InvalidKeyException
如果密钥的编码错误,参数丢失等等。
engineInitSign
 protected abstract void engineInitSign(PrivateKey privateKey) throws InvalidKeyException
SPI:用指定的私有密钥为签名操作初始化该签名对象。

参数:
privateKey - 身份的私有密钥,将生成该身份的签名。
抛出: InvalidKeyException
如果密钥的编码错误,参数丢失等等。
engineUpdate
 protected abstract void engineUpdate(byte b) throws SignatureException
SPI:修改用指定的字节进行签名或验证的数据。

参数:
b - 用于修改的字节。
抛出: SignatureException
如果没有正确的初始化引擎。
engineUpdate
 protected abstract void engineUpdate(byte b[],
                                int off,
                                      int len) throws SignatureException
SPI:修改用起始于指定偏移量的指定数组签名或验证的数据。

参数:
data - 字节数组。
off - 字节数组中开始的偏移量。
len - 从偏移量开始使用的字节数。
抛出: SignatureException
如果没有正确的初始化引擎。
engineSign
 protected abstract byte[] engineSign() throws SignatureException
SPI:返回目前被修改的数据的签名字节。 返回的签名是 X.509 编码。

返回值:
签名操作的结果的签名字节。
抛出: SignatureException
如果没有正确的初始化引擎。
engineVerify
 protected abstract boolean engineVerify(byte sigBytes[]) throws SignatureException
SPI:验证传入的签名。 签名字节应是 X.509 编码。

参数:
sigBytes - 要验证的签名字节。
返回值:
如果验证了签名则为 true,如果没有则为 false。
抛出: SignatureException
如果没有正确的初始化引擎,或者传入的签名的编码错误或类型错误等。
engineSetParameter
 protected abstract void engineSetParameter(String param,
                                            Object value) throws InvalidParameterException
SPI:将指定的算法参数设置为指定的值。 该方法提供了一个通用的机制,通过它可以设置该对象的不同参数。一个参数可以是算法任何可设置的参数,例如参数的尺寸,或用于生成签名的随机数源 ( 如果是恰当的 ),或指明是否执行特定的而非任意的计算的一个指示。 需要一个一致的,算法特定的参数命名体系,但是现在还没有制定。

参数:
param - 参数的字符串标识符。
value - 参数值。
抛出: InvalidParameterException
如果 param 对该签名算法引擎是一个无效的参数,或参数已经被设置,不能再次设置,或发生一个安全性异常,等等。
engineGetParameter
 protected abstract Object engineGetParameter(String param) throws InvalidParameterException
SPI:获得指定算法的参数值。 该方法提供了一个通用的机制,通过它可以获得该对象的不同参数。一个参数可以是算法任何可设置的参数,例如参数的尺寸,或用于生成签名的随机数源 ( 如果是恰当的 ),或指明是否执行特定的而非任意的计算的一个指示。需要一个一致的,算法特定的参数命名体系,但是现在还没有制定。

参数:
param - 参数的字符串名。
返回值:
表示该参数值的对象,如果没有值则为 null。
抛出: InvalidParameterException
如果 param 对该引擎是一个无效的参数,或者当试图获得该参数时发生了另一个异常。
clone
 public Object clone() throws CloneNotSupportedException
如果实现是可复制的,返回一个复制。

返回值:
如果实现是可复制的则返回一个复制。
抛出: CloneNotSupportedException
如果该方法被不支持 Cloneable 的实现调用。
覆盖:
Object 中的 clone

当前位置 类层次 (JDK) 所有类 (JDK) 所有域和方法 (JDK)