Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python hashlib提供一些图像文件的意外哈希_Python_Hash_Md5 - Fatal编程技术网

Python hashlib提供一些图像文件的意外哈希

Python hashlib提供一些图像文件的意外哈希,python,hash,md5,Python,Hash,Md5,我试图验证一堆文件的md5哈希值,以应对编程挑战。大多数文件正在正确验证(它们都应该正确)。但是在一些jpg、png和gif文件上,我生成的哈希是不正确的。使用md5sum检查终端中的文件会生成正确的哈希。以下代码显示了如何获取md5哈希: import hashlib import urllib urllib.urlretrieve("https://farm4.staticflickr.com/3199/3083395581_663a7aaf76_z.jpg", "TestFile.jpg

我试图验证一堆文件的md5哈希值,以应对编程挑战。大多数文件正在正确验证(它们都应该正确)。但是在一些jpg、png和gif文件上,我生成的哈希是不正确的。使用md5sum检查终端中的文件会生成正确的哈希。以下代码显示了如何获取md5哈希:

import hashlib
import urllib

urllib.urlretrieve("https://farm4.staticflickr.com/3199/3083395581_663a7aaf76_z.jpg", "TestFile.jpg")
fileBytes = open("TestFile.jpg", 'rb').read()

foundHash = hashlib.md5(fileBytes).hexdigest()

print "Found Hash: " + foundHash
print "Expected Hash: abab4dd9a83f5636c10f4937686a7993"

为什么它不能生成正确的md5?

使用urllib.urlretrieve检索图像时,会得到与使用浏览器下载此图像时不同的文件。在命令行上检查Python下载的“TestFile.jpg”的散列,看看它不是预期的散列


检查URL的来源,并确保它符合flickr API的正确用法。

TestFile.jpg没有相同的哈希,但我不知道flickr API。你是说可能是网站没有正确地传递文件,还是我没有正确地接收到文件?Flickr正在返回一个(可能是动态创建的)640px图像或一个500px图像,这取决于URL请求的形成方式。对于快速修复,请使用另一个Python库下载您的映像,该映像获得640px版本,例如
请求
。要理解这个问题,您必须对Flickr如何决定返回任一图像大小进行一些研究-您需要了解
urlretrieve
请求与此URL的
wget
请求有何不同。