1

Python を使用して、すべてのメタデータを除外して、TIFF 画像の md5 ハッシュを計算するにはどうすればよいですか?

JPGで、私は次のようなことをします:

def jpeg(fh):
  hash = hashlib.md5()
  assert fh.read(2) == "\xff\xd8"
  while True:
      marker,length = struct.unpack(">2H", fh.read(4))
      assert marker & 0xff00 == 0xff00
      if marker == 0xFFDA: # Start of stream
          hash.update(fh.read())
          break
      else:
          fh.seek(length-2, os.SEEK_CUR)
  print "Hash: %r" % hash.hexdigest()

>> jpeg(file("test.jpg"))
>> Hash: 'debb4956941795d6ef48717e4c9cc433'

これを TIFF 画像に拡張する方法がわかりません。

画像内のメタデータの場所が変わる可能性があるため、TIFF の場合はややこしいように見えます (常に先頭または末尾にあるとは限りません)。

4

1 に答える 1

5

Python Imaging LibraryのImageモジュールを使用します。クラスのtostringメソッドはImage、ピクセル データを文字列として返します。

import Image # Python Imaging Library
import hashlib

def hashtiff(fn):
    tf = Image.open(fn)
    return hashlib.md5(tf.tostring()).hexdigest()

MD5 には、ハッシュ アルゴリズムとして既知の弱点があります。SHA-256 や SHA-512 などを使用することをお勧めします

于 2012-08-24T20:31:46.783 に答える