identify checksum type?

Scott David Daniels Scott.Daniels at Acm.Org
Tue Jun 30 17:00:44 CEST 2009


Christian Heimes wrote:
> PK schrieb:
>> Given a checksum value, whats the best way to find out what type it is?
>>
>> meaning. I can use hashlib module and compute a md5 or sha1 for a given data
>> etc..but given a checksum value say "d2bda52ee39249acc55a75a0f3566105" whats
>> the best way for me to identify if its a sha1 or md5 or anyother sum type
>> for that matter?
>>
>> is there a nice way to do this in python?
> 
> As far as I know there is no way to identify a checksum by its value. A
> checksum is just a number. You can try an educated guess based on the
> length of the checksum. Or you can try all hash algorithms until you get
> a hit but that may lead to security issues.
> 
> Some applications prefix the hash value with an identifier like "{MD5}"
> or "{SHA1}".
> 
> Christian
> 
fortunately, the hashlib checksums can be distinguished by their length
On the newly minted 3.1:
     import hashlib
     text = b'BDFL forever; FLUFL for frequently'
     for name in 'md5 sha1 sha224 sha256 sha384 sha512'.split():
         result = getattr(hashlib, name)(text).hexdigest()
         print('%6s:%3d %s' % (name, len(result), result))

    md5: 32 457484d2817fbe475ab582bff2014e82
   sha1: 40 242076dffbd432062b439335438f08ba53387897
sha224: 56 89c0439b1cf3ec7489364a4b8e50b3ba196706eecdb5e5aec6d6290f
sha256: 64 e10938435e4b5b54c9276c05d5f5d7c4401997fbd7f27f4d4...807d
sha384: 96 3fe7c7bf3e83d70dba7d59c3b79f619cf821a798040be2177...edb7
sha512:128 fe50d9f0c5780edb8a8a41e317a6936ec6305d856c78ccb8e...1fa0

You'll have to guess for adler32 vs. crc32 vs. seeded crc32, ...

--Scott David Daniels
Scott.Daniels at Acm.Org



More information about the Python-list mailing list