MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Reproducing a hash code

  • To: mathgroup at smc.vnet.net
  • Subject: [mg83031] Re: Reproducing a hash code
  • From: "Steve Luttrell" <steve at _removemefirst_luttrell.org.uk>
  • Date: Thu, 8 Nov 2007 06:07:37 -0500 (EST)
  • References: <fgmppa$9i5$1@smc.vnet.net><fgp9kp$in7$1@smc.vnet.net> <fgs7m5$3h5$1@smc.vnet.net>

Excellent diagnosis and solution. Thank you both.

-- 
Steve Luttrell
West Malvern, UK

"Mark Fisher" <particlefilter at gmail.com> wrote in message 
news:fgs7m5$3h5$1 at smc.vnet.net...
> On Nov 6, 3:46 am, michael.p.crouc... at googlemail.com wrote:
>> On 5 Nov, 10:03, "Steve Luttrell"
>>
>>
>>
>> <steve at _removemefirst_luttrell.org.uk> wrote:
>> > I am trying to get results from Mathematica's Hash function (for hash 
>> > type
>> > "MD5") that are consistent with the results obtained using "openssl 
>> > md5" in
>> > Linux.
>>
>> > The particular example I would like to reproduce is 
>> > onhttp://wiki.secondlife.com/wiki/LlMD5String, where
>>
>> > "Hello, Avatar!:0"
>>
>> > hashes to (for hash type "MD5")
>>
>> > 112abd47ceaae1c05a826828650434a6
>>
>> > In Mathematica 6 (Windows Vista, Intel hardware), doing the obvious
>>
>> > Hash["Hello, Avatar!:0", "MD5"] // BaseForm[#, 16] &
>>
>> > I get the following result
>>
>> > a8c2ab1662a37cb9f8ea5af154a48c52
>>
>> > This is not the same as expected. Does anyone know how to get 
>> > consistent
>> > results?
>>
>> > --
>> > Steve Luttrell
>> > West Malvern, UK
>>
>> Hi Steve
>>
>> It seems that Mathematica includes the enclosing quotes "" when it
>> generate it's hash:
>>
>> As you point out, in Mathematica 6 (on windows and Linux) if we do
>> Hash["Hello, Avatar!:0", "MD5"] // BaseForm[#, 16] &
>> we get
>> a8c2ab1662a37cb9f8ea5af154a48c52
>>
>> Now onto our linux box - if we do (notice the extra quotes I have
>> added)
>>
>> echo -n '"Hello, Avatar!:0"' | openssl md5
>>
>> we get
>>
>> a8c2ab1662a37cb9f8ea5af154a48c52
>>
>> as before.
>> Hope this helps,
>> Mike
>
> Now that Mike has diagnosed the problem, here's a solution:
>
> StringHash[string_String, type_:"MD5"] :=
> Module[{stream, file, hash},
>  stream = OpenWrite[];
>  WriteString[stream, string];
>  file = Close[stream];
>  hash = FileHash[file, type];
>  DeleteFile[file];
>  hash
>  ]
>
> Then
>
> StringHash["Hello, Avatar!:0"] // BaseForm[#, 16] &
>
> produces
>
> 112abd47ceaae1c05a826828650434a6
>
> --Mark
>
> 



  • Prev by Date: Re: Data functions (like ElementData) and physical units
  • Next by Date: Re: Memory requirements in Mathematica 6
  • Previous by thread: Re: Reproducing a hash code
  • Next by thread: How to Print without linebreaks?