美好的一天,
我制作了一个脚本,可以帮助我比较应用程序的md5哈希(是否正式)。如您所知,当您访问App官方网站时,您会看到一个供应用程序使用的官方md5哈希值,以将其与其他副本进行比较。
我的问题是,即使md5哈希值相同,当我测试脚本时也总是给我NOT OFFICIAL
。
这是我的代码
import subprocess
Hash = str.strip(input())
print(Hash)
Dir = str.strip(input())
print(Dir)
output = subprocess.check_output("md5 " + Dir, shell=True)
print(output)
if Hash == output:
print("OFFICIAL")
else:
print("NOT OFFICIAL")
,输出为:
b'MD5 (/Users/username/Desktop/test.py) =
86ece1d78b65fdb40058a3514d90df9d\n' NOT OFFICIAL
我的代码有问题吗?
谢谢..
答案 0 :(得分:0)
您需要decode()
才能将output
从bytes
转换为str
。此外,您还需要strip()
,因为否则您将比较带有换行符的字符串与没有换行符的字符串。最后,您可能需要解析输出以删除md5
实用程序在哈希旁边打印的内容(如果有的话)。
注意:代替生成进程,更好的解决方案是使用标准的hashlib
模块,这也将使您的脚本可移植,更简单,更快速。
注意2:如果可能,您应该使用其他较新的哈希值。