Vue实现FISCO-BCOS的EC密钥对生成及ECDSA签名
说明
标准版 FISCO BCOS 使用 ECDSA 签名算法进行签名验证,椭圆曲线参数为secp256k1。ECDSA生成的EC密钥对,公钥长度为 512 bits,私钥长度为256 bits。其交易长度为520bits,其中标识符8bits,签名长度512bits。
签名过程:
生成消息摘要:ECDSA256使用SHA256生成256比特的摘要。
应用签名算法对摘要进行签名:产生一个随机数k,利用随机数k,计算出签名使用的r-s值,拼接r-s值构成消息摘要的签名。
签名验证:从签名中分离出r-s值,利用公钥和s计算r,比较两个r值。
注意:
由于后端的ECDSA对签名的ASN1解析与前端jsrsasign库的ASN1加密不对应,所以必须传输r-s级联的签名。
安装module依赖
npm install jsrsasign –save
引入module依赖
import jsrsasign from ‘jsrsasign’
生成密钥对
1 | let ec = new jsrsasign.KJUR.crypto.ECDSA({ curve: "secp256k1" }); |
私钥签名
1 | let rawHash = "xxx"; // 待签名十六进制字符串 |
公钥验签
1 | let rawHash = "xxx"; // 待签名十六进制字符串 |
参考文章
- FISCO BCOS 创建和使用账户
- FISCO BCOS 国密支持方案
- jsrsasign JavaScript API Reference —— class for EC key generation, ECDSA signing and verifcation
- jsrsasign JavaScript API Reference —— Class KJUR.crypto.Signature
- jsrsasign JavaScript API Reference ——class for RSA/ECC/DSA key utility
- js使用ecdsa加密,go使用ecdsa解密中遇到的坑
- ECDSA签名+验签