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签名+验签