MD5编码HTML产生2个不同的结果

时间:2019-03-16 16:20:41

标签: python python-3.x md5 checksum hashlib

有人可以帮助解释为什么会这样吗?如果我使用requests模块从站点抓取HTML,并使用hashlib获取md5校验和,则会得到一个答案。然后,如果我将html保存为html文件,请打开它,并执行相同的md5校验和,这将为我提供不同的校验和。

import requests
import hashlib

resp = requests.post("http://casesearch.courts.state.md.us/", timeout=120)
html = resp.text
print("CheckSum 1: " + hashlib.md5(html.encode('utf-8')).hexdigest())

f = open("test.html", "w+")
f.write(html)
f.close()

with open('test.html', "r", encoding='utf-8') as f:
    html2 = f.read()
print("CheckSum 2: " + hashlib.md5(html2.encode('utf-8')).hexdigest())

结果如下:

CheckSum 1: e0b253903327c7f68a752c6922d8b47a
CheckSum 2: 3aaf94e0df9f1298d61830d99549ddb0

1 个答案:

答案 0 :(得分:1)

文本模式从文件中读取时,Python可能会根据提供给open的{​​{3}}参数的值来转换换行符。

  

从流中读取输入时,如果换行符为None,则启用通用换行符模式。输入中的行可以以'\ n','\ r'或'\ r \ n'结尾,在返回给调用者之前,这些行会转换为'\ n'。如果为“”,则启用通用换行模式,但行结尾不翻译就返回给呼叫者。

这种差异将影响生成的哈希值。