黑松山资源网 Design By www.paidiu.com
接着上篇的内容,这里实现一个交易记录链,废话不多说,先看图:
跟之前的逻辑类似,但也有少许不同,这里多了一个payloadhash,以及对payloadhash和prehash的hash,下面看代码实现:
import hashlib import datetime # 交易记录类 class DaDaMessage: def __init__(self, data): self.hash = None # 自身hash self.preHash = None # 上一个区块hash self.data = data # 交易信息 self.timestamp = datetime.datetime.now() # 交易时间 self.payloadHash = self.payload_hash() # 交易后的哈希,防止篡改 #对交易信息进行hash def payload_hash(self): sha = hashlib.md5() datastr = (str(self.data) + str(self.timestamp)).encode("utf-8") sha.update(datastr) return sha.hexdigest() #密封,锁定交易信息 def seal(self): self.hash = self.hash_message() #将交易信息和上一个区块密封 def hash_message(self): sha = hashlib.md5() datastr = (str(self.preHash) + str(self.payloadHash)).encode("utf-8") sha.update(datastr) return sha.hexdigest() #校验区块信息 def validate(self): if self.hash != self.hash_message(): raise InvalidateMessage("交易哈希鏈接唄修改") if self.payloadHash != self.payload_hash(): raise InvalidateMessage("交易時間與數據被修改") #鏈接區塊 def link(self,Message): self.preHash = Message.hash def __repr__(self): return "hash:{},preHash:{},data:{}".format(self.hash,self.preHash,self.data)
自定义异常类:
class InvalidateMessage(Exception): def __init__(self,*args,**kwargs): super(Exception,self).__init__(*args,**kwargs)
编写测试模块:
if __name__=="__main__": m1 = DaDaMessage("I love coins 12") m2 = DaDaMessage("I love coins 13") m3 = DaDaMessage("I love coins 14") try: m1.seal() m2.link(m1) m2.seal() m3.link(m2) m3.seal() m1.hash = "0xaaaajjjjj" m1.data = "I don't love " m1.validate() m2.validate() m3.validate() print(m1) print(m2) print(m3) except InvalidateMessage as e: print(e)
查看打印结果:
跟上面的逻辑完美契合,然后我们在测试下篡改数据的结果:
当然,你也可以尝试不用try…except 看下结果。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
黑松山资源网 Design By www.paidiu.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
黑松山资源网 Design By www.paidiu.com
暂无评论...
更新日志
2024年10月07日
2024年10月07日
- 陈慧娴.1989-永远是你的朋友(2024环球MQA-UHQCD限量版)【环球】【WAV+CUE】
- 何洛洛.2024-别叫醒我(EP)【光羽】【FLAC分轨】
- 林忆莲.1996-爱莲说2CD【华纳】【WAV+CUE】
- 黄妃.2005-红【亚律】【WAV+CUE】
- 刘美麟《同生》[FLAC/分轨][161.95MB]
- 群星《前途海量 电影原声专辑》[320K/MP3][106.26MB]
- 群星《前途海量 电影原声专辑》[FLAC/分轨][227.78MB]
- 张信哲.1992-知道新曲与精丫巨石】【WAV+CUE】
- 王翠玲.1995-ANGEL【新艺宝】【WAV+CUE】
- 景冈山.1996-我的眼里只有你【大地唱片】【WAV+CUE】
- 群星《八戒 电影原声带》[320K/MP3][188.97MB]
- 群星《我的阿勒泰 影视原声带》[320K/MP3][139.47MB]
- 纪钧瀚《胎教古典音乐 钢琴与大提琴的沉浸时光》[320K/MP3][148.91MB]
- 刘雅丽.2001-丽花皇后·EMI精选王【EMI百代】【FLAC分轨】
- 齐秦.1994-黄金十年1981-1990CHINA.TOUR.LIVE精丫上华】【WAV+CUE】