2146  
公私钥生成说明
作者: 宋海旭 于 2020年04月14日 发布在分类 / 区块链基础知识 / 名词解释 下,并于 2020年07月30日 编辑

公钥:应用接入证书模式为上传公钥时,参与者需在本地客户端自主生成公私钥对,在本地自行保存私钥,并上传公钥至BSN。建议使用OpenSSL最新版本生成密钥,如果应用服务的框架是 Fabric-secp256r1 请使用 prime256v1 密码算法标识,Fabric-sm2、FISCO-sm2和XuperChain-sm2使用 sm2 ,FISCO-secp256k1则使用 secp256k1 ,具体步骤如下:
  1. 准备工作:从https://www.openssl.org/source/下载openssl最新版本;创建一个data.txt文件,里面输入一些测试字符串,如:Hello world
  2. 终端输入 openssl 进入open ssl命令行
    OpenSSL> 
  3. 输入命令 ecparam -name prime256v1 -genkey -out key.pem 生成一个私钥文件key.pem
    OpenSSL> ecparam -name prime256v1 -genkey -out key.pem
  4. 输入命令 ec -in key.pem -pubout -out pub.pem 用key.pem文件中的私钥生成一个公钥文件pub.pem
    OpenSSL> ec -in key.pem -pubout -out pub.pem
    read EC key
    writing EC key
  5. 输入命令 dgst -sha256 -sign key.pem -out signature.bin data.txt 用key.pem文件中的私钥对data.txt文件进行签名生成签名文件signature.bin
    OpenSSL> dgst -sha256 -sign key.pem -out signature.bin data.txt
  6. 输入命令 dgst -verify pub.pem -sha256 -signature signature.bin data.txt 用pub.pem文件中的公钥对data.txt和signature.bin文件进行签名验签
    OpenSSL> dgst -verify pub.pem -sha256 -signature signature.bin data.txt
    Verified OK
  7. 如果显示Verified OK,输入命令 base64 -in signature.bin -out signature64.txt 将签名文件signature.bin转换成base64编码的 signature64.txt文件
    OpenSSL> base64 -in signature.bin -out signature64.txt
  8. 输入命令 pkcs8 -topk8 -inform PEM -in key.pem -outform PEM -nocrypt -out keypkcs8.pem 将key.pem文件中的私钥转为pkcs8格式

    OpenSSL> pkcs8 -topk8 -inform PEM -in key.pem -outform PEM -nocrypt -out keypkcs8.pem

  9. 本地自行保存好keypkcs8.pem文件,并将pub.pem、data.txt 和signature64.txt中的全部内容对应复制到界面的公钥、测试数据和签名数据文本框中进行验证。

测试数据:应用接入证书模式为上传公钥时,参与者需将公钥上传至BSN,BSN为验证用户上传公钥的有效性,需用户对一段数据使用私钥进行签名,然后将公钥、测试数据、签名数据一同上传至BSN,BSN使用用户上传的公钥对签名数据进行验签,其中待签名的数据为测试数据。


签名数据:应用接入证书模式为上传公钥时,参与者需将公钥上传至BSN,BSN为验证用户上传公钥的有效性,需用户对一段数据使用私钥进行签名,然后将公钥、测试数据、签名数据一同上传至BSN,由BSN使用用户上传的公钥对签名数据进行验签,其中用户使用私钥对一段数据进行签名的结果为签名数据。






 推荐知识

 历史版本

修改日期 修改人 备注
2020-07-30 11:19:42[当前版本] 宋海旭 1
2020-07-30 11:15:56 宋海旭 1
2020-04-24 21:26:03 郑小军 内容更新
2020-04-23 13:08:21 陈曦 内容调整

 附件

附件类型

PDFPDF

区块链服务网络发展联盟