python统计字符串长度_Python字符串校验和计算器

我设法想出一个代码来计算文件校验和。下面是代码:Python字符串校验和计算器

from Crypto.Hash import *

def get_file_checksum(filename):

h = SHA384.new()

chunk_size = 8192

with open(filename, 'rb') as f:

while True:

chunk = f.read(chunk_size)

if len(chunk) == 0:

break

h.update(chunk)

return h.hexdigest()

现在我想到了另一个函数来计算任何给定字符串的校验和。这里是代码

def get_string_checksum(string):

h = SHA384.new()

h.update(string)

return h.hexdigest()

我面临的问题是字符串校验和的输出不符合文件内容的输出。

对于我的系统上的特定文件,我得到这些值

get_file_checksum(filename)将获得:

d57eec87df9c5ec33baab34be4ac7695a59d80779d10e8920640fac62f4bfa2b0da0cef0b0d7d6d1e16cae5ca560cd95

get_string_checksum(string)将获得:

18044418f40f12e9601d0f15a7da46c114779ac337fd8fe513a122e2aa95a9b5e05d6b00d46d0682c0054c5f2b3355c0

,我使用的字符串的一种说法是与文件的内容相同。

是不是有什么毛病get_string_checksum(string)?

2016-06-14

Drmaposa

+2

检查一下尾部的新生产线。这会使结果完全不同。 –

+0

@jonrsharpe感谢您的及时回复。我检查了文件和字符串,没有任何空白的新行。我甚至用'strip()'来更新代码,例如'h.update(string.strip())'和'h.update(chunk.strip())',但结果仍然不同。 但是,一些奇怪的事情正在发生。如果我打印出文件内容的长度和“h.update(string.strip())'之前的字符串长度,我希望字符串长度是相同的,但也是不同的。 –

+0

它们会产生不同的校验和,因为您从内存中输入字符串。尝试从同一个文件中读取字符串。 –

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值