Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2007

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

Search the Archive

Re: Reproducing a hash code

  • To: mathgroup at smc.vnet.net
  • Subject: [mg83004] Re: Reproducing a hash code
  • From: Mark Fisher <particlefilter at gmail.com>
  • Date: Wed, 7 Nov 2007 06:30:24 -0500 (EST)
  • References: <fgmppa$9i5$1@smc.vnet.net><fgp9kp$in7$1@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: Bug of Integrate
  • Next by Date: Re: Re: Problem with element and Maximize
  • Previous by thread: Re: Reproducing a hash code
  • Next by thread: Re: Reproducing a hash code