分片哈希piecewise hashing

1.基本概念

分片哈希是使用任意的哈希算法对一个文件产生多个校验和而不是对一个文件产生一个校验和。

它将一个文件进行切片,将文件分成固定的大小,然后计算每一个切片的哈希值。例如,第一个hash是由前512个字节构成的,第二个哈希值是由后面的另外的512个字节构成的。

这个技术最先被用到在图像的取证上的。如果一个错误发生了,只有一个分段hash会受到影响,对于剩下的数据仍然能保持其正确性。

分段hash可以使用加密哈希例如MD5或者传统的FNV哈希算法。

=========================================================

对于分段hash,我们要做的事情首先就是删除文本中的无用字符,对文本每个片段进行切片,计算它们的hash值。


2.删除文本中不需要的字符

解决方案
strip() 方法能用于删除开始和结尾的字符。
现在我们要从文件中读取多行数据。我们可以使用strip操作和其他迭代操作相结合。

代码如下:

In [7]: wholeline=""

In [8]: with open(filename) as f:
   ...:     lines = (line.strip() for line in f)
   ...:     for line in lines:
   ...:         wholeline +=line
   ...:     print wholeline
   ...:     
In [10]: wholeline.replace(' ','')

这里写图片描述
说明:
我们的filename中存放的是我们的代码文件

部分代码如下所示:

这里写图片描述

我们首先设置一个空的字符串,这个时候我们使用生成器和strip相结合,删除开头和结尾的空白字符串。这个时候我们将去除了开头和结尾的代码串依次赋值给一个空白字符串然后将其串联成一个大的字符串。

我们可以打印出wholeline看一下结果如下所示:

这里写图片描述

这个时候由于中间的代码的空格还没有去除,这个时候我们需要使用replace这个函数去除掉我们代码中间的空格。

3.python中生成MD5

我们在得到整个文件或者代码文件的后我们需要对整个文件进行切片,然后计算出每个文件切片之后的hash值。计算每个文件切片的hash值的时候我们可以使用传统的hash算法,例如mds sha256等等。
在这里我们使用md5来计算我们文件的切片。
在Python中生成md5一般有两种方法。


3.1使用md5包

这里写图片描述


3.2 使用hashlib

这里写图片描述

一般都使用第二种方法。

同理我们可以使用hashlib来计算其他的传统加密hash例如:sha1,sha256等等

如下所示:
这里写图片描述


这里写图片描述





Reference

[1].http://python3-cookbook.readthedocs.io/zh_CN/latest/c02/p11_strip_unwanted_characters.html



你不在
当我最需要爱
无尽的等待像独白的难捱
你不在
我受了伤
再偷偷好起来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值