链码实现的业务逻辑 链码设计椭圆曲线加密解密、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
|