首页 > 编程知识 正文

椭圆曲线密码,ecc椭圆曲线加密算法

时间:2023-05-05 18:48:14 阅读:258208 作者:2865

链码实现的业务逻辑
链码设计椭圆曲线加密解密、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","badxbc","男","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
其中ECC的密钥长度可选:

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。