数字签名

Signature类

Signature类用来生成和验证数字签名(引擎类)

方法详述

1)初始化
初始化验证签名的公钥
初始化验证签名的私钥
2)更新
根据初始化类型,可更新要签名或验证的字节
3)签署或验证所有更新字节的签名

getInstance(String algorithm)
getInstance(String algorithm,Provider provider)
getInstance(String algorithm,String provider)

//初始化用于签名的Signature对象
initSign(PrivateKey privateKey)
initSign(PrivateKey privateKey,SecureRandom random)

//初始化用于验证的Signature对象
initVertify(PublicKey publicKey)
//初始化来自给定证书的公钥初始化用于验证的Signature对象
initVertify(Certificate certificate)

//使用指定的字节数组更新要签名和验证的数据
update(byte[] data)

//从指定偏移量开始更新
update(byte[] data,int off,int len)

//使用缓冲方式更新
update(ByteBuffer data)

//返回所有的已更新数据的签名或验证的字节
sign()

//完成签名操作,并得到存储在缓冲区域中的签名字节长度
sign(byte[] output,int offset,int len)

//验证传入的签名,并返回验证结果
vertify(byte[] signature)
vertify(byte[] signature,int offset,int len)

//使用指定的参数集初始化此签名引擎
setParameter(AlgorithmParameterSpec params)

//返回与此签名对象一起使用的参数
getParameters()

//获取算法名称
getAlgorithm();

//若可以复制则返回副本
clone()

//获取提供者
getProvider();

//输出信息
toString();

实现实例

//待做数据签名的原始信息
byte[] data = "Data Signature".getBytes();
//实例化KeyPairGenerator对象
KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA");
//初始化KeyPairGenerator对象
kpg.initialize(1024);
//生成KeyPair对象
KeyPair kp = kpg.genKeyPair();
//实例化Signture对象
Signature signature = Signature.getInstance(kpg.getAlgorithm());
//初始化用于签名的Signature对象
signature.initSign(kp.getPrivate());
//更新
signature.update(data);
//获得签名,即字节数组Sign
byte[] sign = signature.sign();
//私钥完成签名,公钥用于完成验证
signature.initVerify(kp.getPublic());
//更新
signature.update(data);
//获取验证结果
boolean status = signature.verify(sign);
System.out.println(status); //true
上一篇:1.7 python数据类型之set类


下一篇:1.6 python数据类型之dict类