所有类


java.security
类 Signature

java.lang.Object
  继承者 java.security.SignatureSpi
      继承者 java.security.Signature

public abstract class Signature
   
   
   
   
   
extends SignatureSpi

此 Signature 类用来为应用程序提供数字签名算法功能。数字签名用来保证数字数据的真实性和完整性。

在所有算法当中,数字签名可以是 NIST 标准的 DSA,它使用 DSA 和 SHA-1。可以将使用 SHA-1 消息摘要算法的 DSA 算法可指定为 SHA1withDSA。如果使用 RSA,对消息摘要算法将有多种选择,因此,可以将签名算法指定为 MD2withRSAMD5withRSASHA1withRSA。没有默认的算法名称,所以必须为其指定名称。

与 Java Security 中其他基于算法的类一样,Signature 提供了与实现无关的算法,因此,调用方(应用程序代码)会请求特定的签名算法并将它传回给已被正确初始化的 Signature 对象。如果需要,还可以通过特定的提供程序请求特定的算法。请参见 getInstance 方法。

因此,有以下两种请求 Signature 算法对象的方法:或者仅指定算法名称,或者既指定算法名称又指定包提供程序。

  • 如果仅指定了算法名称,则系统将确定环境中是否有所请求的算法实现,是否不止一个,是否为首选实现。

  • 如果既指定了算法名称又指定了包提供程序,则系统将确定在请求的包中是否有该算法的实现;如果没有,则抛出异常。

Signature 对象可用来生成和验证数字签名。

使用 Signature 对象签名数据或验证签名包括以下三个阶段:

  1. 初始化,使用

  2. 更新

    根据初始化类型,这可更新要签名或验证的字节。请参见 update 方法。

  3. 签署或验证所有更新字节的签名。请参见 sign 方法和 verify 方法。

注意,由于历史原因,此类是从 SignatureSpi 中抽象出来的,并进行了扩展。应用程序开发人员只需注意在此 Signature 类中定义的方法即可;超类中的所有方法都是供那些希望提供自己的数字签名算法实现的加密服务提供程序使用的。


字段摘要
protected static intSIGN
          可能的 state 值,表示此签名对象已经初始化签名。
protected  intstate
          此签名对象的当前状态。
protected static intUNINITIALIZED
          可能的 state 值,表示尚未初始化此签名对象。
protected static intVERIFY
          可能的 state 值,表示此签名对象已经初始化验证。
 
从类 java.security.SignatureSpi 继承的字段
appRandom
 
构造方法摘要
protected Signature(String algorithm)
          创建指定算法的 Signature 对象。
 
方法摘要
 Objectclone()
          如果此实现可以复制,则返回副本。
 StringgetAlgorithm()
          返回此签名对象的算法名称。
static SignaturegetInstance(String algorithm)
          生成实现指定摘要算法的 Signature 对象。
static SignaturegetInstance(String algorithm, Provider provider)
          如果提供程序能够提供这样的算法,则将生成一个实现指定算法的 Signature 对象,作为指定提供程序提供的对象。
static SignaturegetInstance(String algorithm, String provider)
          如果提供程序能够提供这样的算法,则将生成一个实现指定算法的 Signature 对象,作为指定提供程序提供的对象。
 ObjectgetParameter(String param)
          已过时。  
 AlgorithmParametersgetParameters()
          返回与此签名对象一起使用的参数。
 ProvidergetProvider()
          返回此签名对象的提供程序。
 voidinitSign(PrivateKey privateKey)
          初始化此用于签名的对象。
 voidinitSign(PrivateKey privateKey, SecureRandom random)
          初始化此用于签名的对象。
 voidinitVerify(Certificate certificate)
          使用来自给定证书的公钥初始化此用于验证的对象。
 voidinitVerify(PublicKey publicKey)
          初始化此用于验证的对象。
 voidsetParameter(AlgorithmParameterSpec params)
          使用指定的参数集初始化此签名引擎。
 voidsetParameter(String param, Object value)
          已过时。 使用 setParameter 取代。
 byte[]sign()
          返回所有已更新数据的签名字节。
 intsign(byte[] outbuf, int offset, int len)
          完成签名操作并从 offset 开始,将得到的签名字节存储在提供的缓冲区 outbuf 中。
 StringtoString()
          返回此签名对象的字符串表示形式,以提供包括对象状态和所用算法名称在内的信息。
 voidupdate(byte b)
          更新要由字节签名或验证的数据。
 voidupdate(byte[] data)
          使用指定的字节数组更新要签名或验证的数据。
 voidupdate(byte[] data, int off, int len)
          从指定的偏移量开始,使用指定的字节数组更新要签名或验证的数据。
 voidupdate(ByteBuffer data)
          使用指定的 ByteBuffer 更新要签名或验证的数据。
 booleanverify(byte[] signature)
          验证传入的签名。
 booleanverify(byte[] signature, int offset, int length)
          从指定的偏移量开始,验证指定的字节数组中传入的签名。
 
从类 java.security.SignatureSpi 继承的方法
engineGetParameter, engineGetParameters, engineInitSign, engineInitSign, engineInitVerify, engineSetParameter, engineSetParameter, engineSign, engineSign, engineUpdate, engineUpdate, engineUpdate, engineVerify, engineVerify
 
从类 java.lang.Object 继承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

字段详细信息

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 - 算法的标准字符串名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。
方法详细信息

getInstance

public static Signature getInstance(String algorithm)
                             throws NoSuchAlgorithmException
生成实现指定摘要算法的 Signature 对象。如果默认的提供程序包提供请求的摘要算法实现,则返回一个包含该实现的 Signature 的实例。如果在默认的包中未提供该算法,则将搜索其他的包。

参数:
algorithm - 请求算法的标准名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。
返回:
新 Signature 对象。
抛出:
NoSuchAlgorithmException - 如果环境中未提供该算法。

getInstance

public static Signature getInstance(String algorithm,
                                    String provider)
                             throws NoSuchAlgorithmException,
                                    NoSuchProviderException
如果提供程序能够提供这样的算法,则将生成一个实现指定算法的 Signature 对象,作为指定提供程序提供的对象。

参数:
algorithm - 所请求算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。
provider - 提供程序的名称。
返回:
新 Signature 对象。
抛出:
NoSuchAlgorithmException - 如果在由请求的提供程序提供的包中未提供该算法。
NoSuchProviderException - 如果环境中未提供该提供程序。
IllegalArgumentException - 如果提供程序的名称为 null 或空。
另请参见:
Provider

getInstance

public static Signature getInstance(String algorithm,
                                    Provider provider)
                             throws NoSuchAlgorithmException
如果提供程序能够提供这样的算法,则将生成一个实现指定算法的 Signature 对象,作为指定提供程序提供的对象。注:provider 不一定都需要注册。

参数:
algorithm - 所请求算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。
provider - 提供程序。
返回:
新 Signature 对象。
抛出:
NoSuchAlgorithmException - 如果在由请求的提供程序提供的包中未提供该算法。
IllegalArgumentException - 如果 provider 为 null。
从以下版本开始:
1.4
另请参见:
Provider

getProvider

public final Provider getProvider()
返回此签名对象的提供程序。

返回:
此签名对象的提供程序