2017-03-14 5 views
0

私はプログラムチャレンジのためにたくさんのファイルのmd5ハッシュを検証しようとしています。ほとんどのファイルは正しく検証されています(すべてが必要です)。しかし、いくつかのjpg、png、およびgifファイルでは、私が生成しているハッシュは正しくありません。 md5sumを使用して端末のファイルをチェックすると正しいハッシュが得られます。このコードは、md5ハッシュを取得する方法を示しています。Python hashlibがいくつかの画像ファイルの予期しないハッシュを与える

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が生成されないのはなぜですか?

答えて

0

urllib.urlretrieveを使用して、ブラウザでこのイメージをダウンロードするときよりもイメージを取得することができます。コマンドラインでダウンロードしたPythonの "TestFile.jpg"のハッシュを調べて、予想されるハッシュでないことを確認してください。

URLのソースを確認し、flickr APIの正しい使い方を確認してください。

+0

TestFile.jpgには同じハッシュはありませんが、flickr APIについてはわかりません。ファイルを正しく配信していないウェブサイトである可能性がありますか、正しく受信していないと言いますか? – ElectricPinnaple

+0

Flickrは、URL要求の作成方法に応じて、(動的に作成された)640pxイメージまたは500pxイメージのいずれかを返します。クイックフィックスの場合は、別のPythonライブラリを使って画像をダウンロードし、640pxのバージョンを取得します。 '要求 '。この問題を理解するためには、Flickrがどちらのイメージサイズを返すかを少し研究しなければならないでしょう。たとえば、「urlretrieve」リクエストがどのように異なっているかを調べる必要があります。このURLへの 'wget'リクエスト –

関連する問題