SHA question

Paul Makepeace paulm at paulm.com
Wed Jan 13 16:58:16 GMT 2010


On Wed, Jan 13, 2010 at 07:16, Philip Newton <philip.newton at gmail.com> wrote:
> On Wed, Jan 13, 2010 at 15:58, Dermot <paikkos at googlemail.com> wrote:
>> 2010/1/13 Avi Greenbury <avismailinglistaccount at googlemail.com>:
>>
>>> You might've missed his point.
>>>
>>> If two files are of different sizes, they cannot be identical. Getting
>>> the size of a file is substantially cheaper than hashing it.
>>>
>>> So you check all your filesizes, and need only hash those pairs or
>>> groups that are all the same size.
>>
>> Sorry guess I didn't make myself clear. I need to store the SHA in an
>> SQLite file.
>
> I think you're putting the cart before the horse.
>
> Did someone come up to you and say, "Dermot, put the SHA value in a database."?
>
> I would have thought that you *need* to make sure that you detect
> duplicate files (for example, to avoid processing "the same" file
> twice). Storing the SHA in an SQLite file is a method you would *like*
> to use to accomplish this, but may not be the only way nor the best
> way.
>
> Along those lines, you may wish to store the filesize in bytes in your
> database as well, as a first point of comparison; if the filesize is
> unique, then the file must also be unique and you could save yourself
> the time spent calculating a digest of the file's contents -- no
> 1058-byte file can be the same as any 1927-byte file.

If you're storing the collision data (size, hash, whatever) to protect
against future collisions the only way this scheme of avoiding more
expensive ops like hashing will work (AFAICS) is if you have some
fiddlier code to lazily hash an old file when a newer future file
comes along that matches an existing file size.

>> Incident I get poor results from the MD5 compared with SHA so I can't
>> relie on MD5 for
>>
>> MD5 (md5_base64) results:
>> mr_485_htu_AST.pdf   116caa6cc1705db23a36feb11c8c4113 32
>> MR_2891.pdf          01f73c142dae9f9f403bbab543b6aa6f 32
>> duplicate.pdf         01f73c142dae9f9f403bbab543b6aa6f 32
>> MR_2898.pdf          01f73c142dae9f9f403bbab543b6aa6f 32
>> PR_A02.pdf           5552e6587357f9967dc0bc83153cca63 32
>> mr_485_htu_hrt.pdf   116caa6cc1705db23a36feb11c8c4113 32
>> PR_A01.pdf           5552e6587357f9967dc0bc83153cca63 32
>>
>> SHA (b64digest) results:
>> mr_485_htu_AST.pdf   PqsBpkKgGxdEHvkoNyou1NV5kuY 27
>> MR_2891.pdf          bQhWA445KFzXy6ldF/DSoG2xTEY 27
>> duplicate.pdf         bQhWA445KFzXy6ldF/DSoG2xTEY 27
>> MR_2898.pdf          ULBRZQB00qZIfIWD7oqdpfVpFtw 27
>> PR_A02.pdf           6LdF6sWZnyLdWj44inFI6MSaUY4 27
>> mr_485_htu_hrt.pdf   0VNwG7IiaIneEX3jh3SBUBaXMK0 27
>> PR_A01.pdf           JS33nJhzTo9YTqRWe01xnOb6bEM 27
>
> That's... odd. md5sum's guarantee of "same if the hashes match" isn't
> as strong as SHA's, but I still wouldn't expect two files to md5sum
> the same if their SHA sums don'T match.
>
> However, those MD5 sums don't look like base-64 to me, so maybe you're
> doing something wrong somewhere.
>
> Cheers,
> Philip
> --
> Philip Newton <philip.newton at gmail.com>
>
>



More information about the london.pm mailing list