Hyperledger fabric 链码AES ECC椭圆曲线

Posted blockchain_yhj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hyperledger fabric 链码AES ECC椭圆曲线相关的知识,希望对你有一定的参考价值。

链码实现的业务逻辑
链码设计椭圆曲线加密解密、AES加密解密
业务逻辑:
加密部分:
输入:2部分
明文信息(指定唯一键值)、AES密钥
输出:上链成功信息
链码中写入详细注释并在链码镜像中输出
具体上链数据以及加密步骤
唯一键值---------第一个上链数据
第一步:通过AES加密学生信息 输出信息密文 ----第二个上链数据
第二步:为学生生成ECC密钥对
第三步:为可视化密钥对,编码密钥对,输出编码信息
第四步:通过学生ECC公钥加密AES密钥 ------------第三个上链数据
第四步:编码学生ECC私钥并下发----------第四个上链数据

解密部分:
输入: 2个部分
唯一键值
自己的ECC私钥
输出:
信息明文
解密步骤:
第一步:通过唯一键值获取链上数据
第二部:取出AES加密学生信息的密文、ECC加密AES密钥的密文
第三步:通过输入的ECC私钥解密获取AES密钥
第四步:通过AES密钥解密获取明文

全部操作均在链码中进行

链码安装

peer chaincode install -n eduecc -v 1.0 -l golang -p github.com/chaincode/ecc

链码实例化

peer chaincode instantiate -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n eduecc -l golang -v 1.0 -c '{"Args":["init"]}' -P 'OR ('\\''Org1MSP.peer'\\'','\\''Org2MSP.peer'\\'')'

链码调试过程更新链码操作1安装新的链码2执行链码更新操作

peer chaincode install -n eduecc -v 1.1 -l golang -p github.com/chaincode/ecc
peer chaincode upgrade -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n eduecc -l golang -v 1.1 -c '{"Args":["init"]}' -P 'OR ('\\''Org1MSP.peer'\\'','\\''Org2MSP.peer'\\'')'

数据加密上链操作 输入 明文、AES密钥

peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n eduecc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt  -c '{"Args":["teacherTrans","prod_5","于三","男","汉族","32031189765239","北京市长安街001号","2020-1-1","软件工程","硕士","99","99","99","99","624","80","90","A","hgfedcba87654321"]}'

执行 docker logs 链码镜像ID 查询链上执行日志,获取私钥并下发授权
数据查询解密操作–数据键值、私钥,返回明文

peer chaincode query -C mychannel -n eduecc -c '{"Args":["stuQuery","prod_5","LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUtVZTVGVTBVQzV3eXBzakFWZ2trRTZjNzAxRExpTStabVJseXd3Y3RYK3NvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFckFaRzhERGNERHgzV3hlYS9JL21qMjMrZWVMMnAwa3hpUXJ4bHc3YmxHMVNXQTFMN0VXbwozMjlsSnVmcnYzeEJ1Z3J2RmRpWDZoYTZ5NW0xMzlKWVJ3PT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo="]}'


二、
安装

peer chaincode install -n aes -v 1.0 -l golang -p github.com/chaincode/aes

实例化

peer chaincode instantiate -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n aes -l golang -v 1.0 -c '{"Args":["init"]}' -P 'OR ('\\''Org1MSP.peer'\\'','\\''Org2MSP.peer'\\'')'

更新

peer chaincode upgrade -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n aes -l golang -v 2.7 -c '{"Args":["init"]}' -P 'OR ('\\''Org1MSP.peer'\\'','\\''Org2MSP.peer'\\'')'

数据加密上链

peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n aes --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt  -c '{"Args":["teacherTrans","prod_7","张三","男","hgfedcba87654321"]}'


数据查询解密

peer chaincode query -C mychannel -n aes -c '{"Args":["stuQuery","prod_7"]}'

链码方法中数据输入与输出类型:
AES加解密:
encryptAES([]byte,[]byte)返回[]byte
decryptAES([]byte,[]byte)返回[]byte
base64编码解码:
baseStdEncode([]byte)返回string
baseDeEncode(string)返回string
x509编码解码:
encode(*ecdsa.PrivateKey,ecdsa.PublicKey)返回string(pri),string(pub)
decode(string,string)返回
ecdsa.PrivateKey,*ecdsa.PublicKey
ECC加解密:
ECCEncrypt(string,PublicKey)返回[]byte
ECCDecrypt([]byte,*ecdsa.PrivateKey)返回[]byte

具体链码 以及 链码caliper测试 区块链浏览器 baas可视化平台
各种加密、单一加密、组合加密链码、定制链码
介绍Hyperledger fabric的PPT(52页)
密码学笔记
区块链知识体系简介
部署 ipfs 网络 对接联盟链网络
Hyperledger fabric网络(多共识 多版本 多数据库 ca ) 封装接口sdk
Hyperledger Caliper 测试(多组织 多节点 多共识)
区块链浏览器
节点新增 组织新增
联系We-chat V : 18852897525

以上是关于Hyperledger fabric 链码AES ECC椭圆曲线的主要内容,如果未能解决你的问题,请参考以下文章

Hyperledger Fabric链码之一

Hyperledger Fabric链码之二

Hyperledger Fabric 链码生命周期

Hyperledger Fabric 链码 生命周期和API

Hyperledger Fabric教程--部署Fabric智能合约

区块链:Hyperledger Fabric智能合约(链码)