Most visited

Recently visited

Added in API level 1

Signature

public abstract class Signature
extends SignatureSpi

java.lang.Object
   ↳ java.security.SignatureSpi
     ↳ java.security.Signature


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

签名算法可以是使用DSA和SHA-1的NIST标准DSA。 使用SHA-1消息摘要算法的DSA算法可以指定为SHA1withDSA 在RSA的情况下,存在对消息多个选择摘要算法,所以签名算法可被指定为,例如,MD2withRSA,MD5withRSA,SHA1withRSA。 算法名称必须指定,因为没有默认值。

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

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

  1. Initialization, with either

  2. Updating

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

  3. Signing or Verifying a signature on all updated bytes. See the sign methods and the verify method.

请注意,由于历史原因,此课程是抽象的,并且从SignatureSpi延伸。 应用程序开发人员只应注意本Signature类中定义的方法; 超类中的所有方法都适用于希望提供自己的数字签名算法实现的加密服务提供者。

Android提供了以下 Signature算法:

Name Supported (API Levels)
DSA 1+
DSAwithSHA1 1+
DSS 1–19
ECDSA 11+
ECDSAwithSHA1 11+
MD2withRSA 1–3
MD4withRSA 1–8
MD5withRSA 1+
MD5withRSA/ISO9796-2 1–8
NONEwithDSA 1+
NONEwithECDSA 11+
NONEwithRSA 17+
RSASSA-PSS 1–8
SHA1withDSA 1+
SHA1withECDSA 11+
SHA1withRSA 1+
SHA1withRSA/ISO9796-2 1–8
SHA256withECDSA 11+
SHA256withRSA 1+
SHA384withECDSA 11+
SHA384withRSA 1+
SHA512withECDSA 11+
SHA512withRSA 1+
These algorithms are described in the Signature section of the Java Cryptography Architecture Standard Algorithm Name Documentation.

Summary

Constants

int SIGN

可能的 state值,表示此签名对象已被初始化用于签名。

int UNINITIALIZED

可能的 state值,表示此签名对象尚未初始化。

int VERIFY

可能的值为 state ,表示此签名对象已被初始化以进行验证。

Fields

protected int state

此签名对象的当前状态。

Inherited fields

From class java.security.SignatureSpi

Protected constructors

Signature(String algorithm)

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

Public methods

Object clone()

如果实现可复制,则返回一个克隆。

final String getAlgorithm()

返回此签名对象的算法名称。

static Signature getInstance(String algorithm)

返回实现指定签名算法的Signature对象。

static Signature getInstance(String algorithm, String provider)

返回实现指定签名算法的Signature对象。

static Signature getInstance(String algorithm, Provider provider)

返回实现指定签名算法的Signature对象。

final Object getParameter(String param)

此方法在API级别1中已弃用。已弃用。

final AlgorithmParameters getParameters()

返回与此签名对象一起使用的参数。

final Provider getProvider()

返回此签名对象的提供者。

final void initSign(PrivateKey privateKey, SecureRandom random)

初始化此对象以进行签名。

final void initSign(PrivateKey privateKey)

初始化此对象以进行签名。

final void initVerify(PublicKey publicKey)

初始化此对象以进行验证。

final void initVerify(Certificate certificate)

使用给定证书中的公钥来初始化此对象以进行验证。

final void setParameter(AlgorithmParameterSpec params)

使用指定的参数集初始化此签名引擎。

final void setParameter(String param, Object value)

此方法在API级别1中已弃用。请使用setParameter

final int sign(byte[] outbuf, int offset, int len)

完成签名操作并将结果签名字节存储在提供的缓冲区 outbuf ,从 offset开始。

final byte[] sign()

返回所有更新数据的签名字节。

String toString()

返回此签名对象的字符串表示形式,提供包含对象状态和所用算法名称的信息。

final void update(byte[] data)

使用指定的字节数组更新要签名或验证的数据。

final void update(byte[] data, int off, int len)

使用指定的字节数组更新要签名或验证的数据,从指定的偏移量开始。

final void update(ByteBuffer data)

使用指定的ByteBuffer更新要签名或验证的数据。

final void update(byte b)

更新要签名或通过字节验证的数据。

final boolean verify(byte[] signature, int offset, int length)

在指定的字节数组中验证传入的签名,从指定的偏移量开始。

final boolean verify(byte[] signature)

验证传入的签名。

Inherited methods

From class java.security.SignatureSpi
From class java.lang.Object

Constants

SIGN

Added in API level 1
int SIGN

可能的值为 state ,表示此签名对象已被初始化用于签名。

常量值:2(0x00000002)

UNINITIALIZED

Added in API level 1
int UNINITIALIZED

可能的值为 state ,表示此签名对象尚未初始化。

常量值:0(0x00000000)

VERIFY

Added in API level 1
int VERIFY

可能的 state值,表示此签名对象已被初始化以进行验证。

常量值:3(0x00000003)

Fields

state

Added in API level 1
int state

此签名对象的当前状态。

Protected constructors

Signature

Added in API level 1
Signature (String algorithm)

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

Parameters
algorithm String: the standard string name of the algorithm. See the Signature section in the Java Cryptography Architecture Standard Algorithm Name Documentation for information about standard algorithm names.

Public methods

clone

Added in API level 1
Object clone ()

如果实现可复制,则返回一个克隆。

Returns
Object a clone if the implementation is cloneable.
Throws
CloneNotSupportedException if this is called on an implementation that does not support Cloneable.

getAlgorithm

Added in API level 1
String getAlgorithm ()

返回此签名对象的算法名称。

Returns
String the name of the algorithm for this signature object.

getInstance

Added in API level 1
Signature getInstance (String algorithm)

返回实现指定签名算法的Signature对象。

该方法遍历注册安全提供程序的列表,从最优先的提供程序开始。 返回一个新的Signature对象,该对象封装来自支持指定算法的第一个Provider的SignatureSpi实现。

请注意,注册供应商列表可能通过 Security.getProviders()方法检索。

Parameters
algorithm String: the standard name of the algorithm requested. See the Signature section in the Java Cryptography Architecture Standard Algorithm Name Documentation for information about standard algorithm names.
Returns
Signature the new Signature object.
Throws
NoSuchAlgorithmException if no Provider supports a Signature implementation for the specified algorithm.

也可以看看:

getInstance

Added in API level 1
Signature getInstance (String algorithm, 
                String provider)

返回实现指定签名算法的Signature对象。

返回封装指定提供程序的SignatureSpi实现的新Signature对象。 指定的提供者必须在安全提供者列表中注册。

请注意,注册供应商列表可能通过 Security.getProviders()方法检索。

Parameters
algorithm String: the name of the algorithm requested. See the Signature section in the Java Cryptography Architecture Standard Algorithm Name Documentation for information about standard algorithm names.
provider String: the name of the provider.
Returns
Signature the new Signature object.
Throws
NoSuchAlgorithmException if a SignatureSpi implementation for the specified algorithm is not available from the specified provider.
NoSuchProviderException if the specified provider is not registered in the security provider list.
IllegalArgumentException if the provider name is null or empty.

也可以看看:

getInstance

Added in API level 1
Signature getInstance (String algorithm, 
                Provider provider)

返回实现指定签名算法的Signature对象。

返回封装指定Provider对象的SignatureSpi实现的新Signature对象。 请注意,指定的Provider对象不必在提供程序列表中注册。

Parameters
algorithm String: the name of the algorithm requested. See the Signature section in the Java Cryptography Architecture Standard Algorithm Name Documentation for information about standard algorithm names.
provider Provider: the provider.
Returns
Signature the new Signature object.
Throws
NoSuchAlgorithmException if a SignatureSpi implementation for the specified algorithm is not available from the specified Provider object.
IllegalArgumentException if the provider is null.

也可以看看:

getParameter

Added in API level 1
Object getParameter (String param)

此方法在API级别1中已弃用。
已过时。

获取指定算法参数的值。 这种方法提供了一个通用机制,通过它可以获得这个对象的各种参数。 参数可以是算法的任何可设置参数,例如参数大小或用于签名生成的随机比特源(如果适当的话),或者是否执行特定但可选的计算的指示。 针对每个参数的统一算法特定命名方案是可取的,但此时未指定。

Parameters
param String: the string name of the parameter.
Returns
Object the object that represents the parameter value, or null if there is none.
Throws
InvalidParameterException if param is an invalid parameter for this engine, or another exception occurs while trying to get this parameter.

也可以看看:

getParameters

Added in API level 1
AlgorithmParameters getParameters ()

返回与此签名对象一起使用的参数。

返回的参数可能与用于初始化此签名的参数相同,或者可能包含基础签名实现使用的默认和随机生成参数值的组合,如果此签名需要算法参数但未用任何初始化参数值进行初始化。

Returns
AlgorithmParameters the parameters used with this signature, or null if this signature does not use any parameters.

也可以看看:

getProvider

Added in API level 1
Provider getProvider ()

返回此签名对象的提供者。

Returns
Provider the provider of this signature object

initSign

Added in API level 1
void initSign (PrivateKey privateKey, 
                SecureRandom random)

初始化此对象以进行签名。 如果再次使用不同的参数调用此方法,它将抵消此调用的影响。

Parameters
privateKey PrivateKey: the private key of the identity whose signature is going to be generated.
random SecureRandom: the source of randomness for this signature.
Throws
InvalidKeyException if the key is invalid.

initSign

Added in API level 1
void initSign (PrivateKey privateKey)

初始化此对象以进行签名。 如果再次使用不同的参数调用此方法,它将抵消此调用的影响。

Parameters
privateKey PrivateKey: the private key of the identity whose signature is going to be generated.
Throws
InvalidKeyException if the key is invalid.

initVerify

Added in API level 1
void initVerify (PublicKey publicKey)

初始化此对象以进行验证。 如果再次使用不同的参数调用此方法,它将抵消此调用的影响。

Parameters
publicKey PublicKey: the public key of the identity whose signature is going to be verified.
Throws
InvalidKeyException if the key is invalid.

initVerify

Added in API level 1
void initVerify (Certificate certificate)

使用给定证书中的公钥来初始化此对象以进行验证。

如果证书的类型为X.509,并且 密钥使用扩展字段被标记为 关键字 ,并且 密钥使用扩展字段的值意味着证书中的公钥和其对应的私钥不应该用于数字签名, InvalidKeyException被抛出。

Parameters
certificate Certificate: the certificate of the identity whose signature is going to be verified.
Throws
InvalidKeyException if the public key in the certificate is not encoded properly or does not include required parameter information or cannot be used for digital signature purposes.

setParameter

Added in API level 1
void setParameter (AlgorithmParameterSpec params)

使用指定的参数集初始化此签名引擎。

Parameters
params AlgorithmParameterSpec: the parameters
Throws
InvalidAlgorithmParameterException if the given parameters are inappropriate for this signature engine

也可以看看:

setParameter

Added in API level 1
void setParameter (String param, 
                Object value)

此方法在API级别1中已弃用。
使用setParameter

将指定的算法参数设置为指定的值。 这种方法提供了一个通用机制,通过它可以设置这个对象的各种参数。 参数可以是算法的任何可设置参数,例如参数大小或用于签名生成的随机比特源(如果适当的话),或者是否执行特定但可选的计算的指示。 针对每个参数的统一算法特定命名方案是可取的,但此时未指定。

Parameters
param String: the string identifier of the parameter.
value Object: the parameter value.
Throws
InvalidParameterException if param is an invalid parameter for this signature algorithm engine, the parameter is already set and cannot be set again, a security exception occurs, and so on.

也可以看看:

sign

Added in API level 1
int sign (byte[] outbuf, 
                int offset, 
                int len)

完成签名操作并将结果签名字节存储在所提供的缓冲区outbuf ,从offset开始。 签名的格式取决于基础签名方案。

该签名对象被重置为其初始状态(在调用 initSign方法之后的状态)并且可以重复使用以使用相同的私钥生成进一步的签名。

Parameters
outbuf byte: buffer for the signature result.
offset int: offset into outbuf where the signature is stored.
len int: number of bytes within outbuf allotted for the signature.
Returns
int the number of bytes placed into outbuf.
Throws
SignatureException if this signature object is not initialized properly, if this signature algorithm is unable to process the input data provided, or if len is less than the actual signature length.

sign

Added in API level 1
byte[] sign ()

返回所有更新数据的签名字节。 签名的格式取决于基础签名方案。

对此方法的调用会将此签名对象重置为之前通过调用initSign(PrivateKey)初始化以进行签名时initSign(PrivateKey) 也就是说,如果需要,该对象被重置并可用于从同一个签名者生成另一个签名,通过对updatesign新调用。

Returns
byte[] the signature bytes of the signing operation's result.
Throws
SignatureException if this signature object is not initialized properly or if this signature algorithm is unable to process the input data provided.

toString

Added in API level 1
String toString ()

返回此签名对象的字符串表示形式,提供包含对象状态和所用算法名称的信息。

Returns
String a string representation of this signature object.

update

Added in API level 1
void update (byte[] data)

使用指定的字节数组更新要签名或验证的数据。

Parameters
data byte: the byte array to use for the update.
Throws
SignatureException if this signature object is not initialized properly.

update

Added in API level 1
void update (byte[] data, 
                int off, 
                int len)

使用指定的字节数组更新要签名或验证的数据,从指定的偏移量开始。

Parameters
data byte: the array of bytes.
off int: the offset to start from in the array of bytes.
len int: the number of bytes to use, starting at offset.
Throws
SignatureException if this signature object is not initialized properly.

update

Added in API level 1
void update (ByteBuffer data)

使用指定的ByteBuffer更新要签名或验证的数据。 处理data.remaining()起始处的字节data.position() 返回时,缓冲区的位置将等于它的极限; 其限制不会改变。

Parameters
data ByteBuffer: the ByteBuffer
Throws
SignatureException if this signature object is not initialized properly.

update

Added in API level 1
void update (byte b)

更新要签名或通过字节验证的数据。

Parameters
b byte: the byte to use for the update.
Throws
SignatureException if this signature object is not initialized properly.

verify

Added in API level 1
boolean verify (byte[] signature, 
                int offset, 
                int length)

在指定的字节数组中验证传入的签名,从指定的偏移量开始。

对此方法的调用会将此签名对象重置为之前通过调用initVerify(PublicKey)初始化验证时initVerify(PublicKey) 也就是说,该对象将被重置并可用于验证其公钥在initVerify的调用中指定的身份的另一个签名。

Parameters
signature byte: the signature bytes to be verified.
offset int: the offset to start from in the array of bytes.
length int: the number of bytes to use, starting at offset.
Returns
boolean true if the signature was verified, false if not.
Throws
SignatureException if this signature object is not initialized properly, the passed-in signature is improperly encoded or of the wrong type, if this signature algorithm is unable to process the input data provided, etc.
IllegalArgumentException if the signature byte array is null, or the offset or length is less than 0, or the sum of the offset and length is greater than the length of the signature byte array.

verify

Added in API level 1
boolean verify (byte[] signature)

验证传入的签名。

对此方法的调用会将此签名对象重置为之前通过调用initVerify(PublicKey)进行验证初始化时的状态。 也就是说,该对象将被重置并可用于验证在initVerify调用中指定了公钥的身份的另一个签名。

Parameters
signature byte: the signature bytes to be verified.
Returns
boolean true if the signature was verified, false if not.
Throws
SignatureException if this signature object is not initialized properly, the passed-in signature is improperly encoded or of the wrong type, if this signature algorithm is unable to process the input data provided, etc.

Hooray!