Python哈希不匹配

毛格说恢复莫妮卡

我正在使用Python生成C ++头文件。它是安全分类的,所以我不能在这里发布。

我根据某些输入生成该文件,如果这些输入不变,则应生成相同的文件。

由于它是头文件,几乎在所有位置都包含在头文件中,因此触摸它会导致完整构建。因此,如果没有更改,我不想生成该文件。

最简单的方法似乎是先生成文件,/tmp然后对现有文件进行MD5哈希处理,以查看是否需要更新。

existingFileMd5 = hashlib.md5(open(headerFilePath,  'rb').read())
newFileMd5 = hashlib.md5(open(tempFilePath,  'rb').read())
if newFileMd5 == existingFileMd5:
    print('Info:    file "' + headerFilePath + '" unchanged, so not updated')
    os.remove(tempFilePath)
else:
    shutil.move(tempFilePath, headerFilePath)
    print('Info:    file "' + headerFilePath + '" updated')

但是,当我快速连续运行两次脚本(不更改输入)时,似乎总是认为MD5哈希不同,并且会更新文件,从而减少了构建时间。

除了受输入约束的文件以外,文件没有其他任何可变部分。例如,我没有写时间戳。

我有同事关注这两个文件,并声明它们是相同的(它们很小)。Linux的meld文件比较实用程序还宣布它们相同

因此,问题似乎出在上面发布的代码上。我究竟做错了什么?

user2357112支持Monica

您忘了实际要求哈希。您正在比较两个md5-hasher-thingies,而不是哈希值。

调用digest以将哈希值作为bytes对象,或hexdigest获取哈希值的十六进制编码的字符串:

if newFileMd5.digest() == existingFileMd5.digest():
    ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Erlang 512哈希与python 512哈希不匹配

来自分类Dev

哈希不匹配

来自分类Dev

哈希密码不匹配-Laravel

来自分类Dev

Java哈希密码不匹配

来自分类Dev

MySQL SHA1哈希不匹配

来自分类Dev

password_verify哈希与密码不匹配

来自分类Dev

2 Checkout总是返回哈希不匹配

来自分类Dev

密码哈希和验证不匹配

来自分类Dev

OpenSSL SHA1哈希不匹配

来自分类Dev

password_verify哈希与密码不匹配

来自分类Dev

apt-get哈希和不匹配

来自分类Dev

RewriteRule 与包含哈希的 URL 不匹配

来自分类Dev

VirutalBox:易于下载/哈希问题(APT哈希总和不匹配)

来自分类Dev

如何修复apt-get更新“哈希总和不匹配”

来自分类Dev

Docker构建失败并显示哈希总和不匹配错误

来自分类Dev

Ironclad和Couch PBKDF2哈希之间的不匹配

来自分类Dev

Ruby-提取的简写,如果不匹配,则返回空哈希?

来自分类Dev

冰糕没有发现明显的哈希签名不匹配

来自分类Dev

SAS哈希表合并错误->密钥不匹配

来自分类Dev

如何修复apt-get更新“哈希总和不匹配”

来自分类Dev

复制所有哈希值不匹配的文件

来自分类Dev

解码字符串时哈希值不匹配

来自分类Dev

Windows 10 SDK下载失败-哈希不匹配

来自分类Dev

执行更新时出现“哈希总和不匹配”错误

来自分类Dev

apt-get更新中的哈希总和不匹配

来自分类Dev

Docker构建失败并显示哈希总和不匹配错误

来自分类Dev

复制所有哈希值不匹配的文件

来自分类Dev

C#MD5哈希与Java / PHP MD5哈希不匹配

来自分类Dev

登录哈希 md5 与数据库 md5 哈希密码不匹配