DATACBc
  • 产品概述
  • 产品介绍
    • 产品功能
    • 相关架构
    • 应用场景
  • 购买指南
    • 购买说明
    • 托管模式
    • 自建模式
    • 产品定价
  • 入门指南
    • 账号使用步骤
  • 操作指南
    • 数字藏品案例与运行说明书
      • 区块链节点运行说明书
      • 数字藏品项目运行说明书
  • 开发指南
    • 钱包地址、公私钥生成算法
    • 数据签名与验签
    • 序列化方式与存储
  • 常见问题
    • 运行与安装过程中的常见问题与解决方案
  • 其他
    • 专业词汇说明
    • 产品规划
    • 联系我们
    • 服务条款
由 GitBook 提供支持
在本页
  • 数据签名
  • 签名数据验签
  1. 开发指南

数据签名与验签

区块的签名、交易的签名等算法

上一页钱包地址、公私钥生成算法下一页序列化方式与存储

最后更新于2年前

相关源码开源地址:研发人员加班打包创建中...

公私钥文章请查看:

数据签名

/**
 * 通过私钥字节进行签名
 * @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);
}

钱包地址、公私钥生成算法