鏈碼實作的業務邏輯
鏈碼設計橢圓曲線加密解密、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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/291711.html
標籤:區塊鏈
上一篇:區塊鏈六大分層結構
下一篇:IPFS系列 - 介紹
