数据签名与验签
区块的签名、交易的签名等算法
最后更新于
区块的签名、交易的签名等算法
最后更新于
相关源码开源地址:研发人员加班打包创建中...
公私钥文章请查看:
/**
* 通过私钥字节进行签名
* @param data 待签名数据
* @param privateKey 私钥字节
* @return byte[] 数字签名
* @throws Exception 异常
*/
public static byte[] sign(byte[] data, byte[] privateKey) throws Exception {
PrivateKey priKey = ECDSAUtils.getPrivateKey(privateKey);
// 实例化Signature
Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM, BouncyCastleProvider.PROVIDER_NAME);
// 初始化Signature
signature.initSign(priKey);
// 更新
signature.update(data);
// 签名
return signature.sign();
}
/**
* 通过公钥字节进行验签
* @param data 待校验数据
* @param publicKey 公钥字节
* @param sign 数字签名-通过sign接口签名后的字节数据
* @return boolean 校验成功返回true 失败返回false
* @throws Exception 异常
*
*/
public static boolean verify(byte[] data, byte[] publicKey, byte[] sign) throws Exception {
//获取公钥
PublicKey pubKey = ECDSAUtils.getPublicKey(publicKey);
// 实例化Signature
Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM, BouncyCastleProvider.PROVIDER_NAME);
// 初始化Signature
signature.initVerify(pubKey);
// 更新
signature.update(data);
// 验证
return signature.verify(sign);
}