Reproducing a hash code

Showing 1-4 of 4 messages
Reproducing a hash code Steve Luttrell 11/5/07 2:03 AM
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 on
http://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


Re: Reproducing a hash code michael.p...@googlemail.com 11/6/07 12:46 AM
On 5 Nov, 10:03, "Steve Luttrell"

<steve@_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


Re: Reproducing a hash code Mark Fisher 11/7/07 3:31 AM

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


Re: Reproducing a hash code Steve Luttrell 11/8/07 3:11 AM
Excellent diagnosis and solution. Thank you both.

--
Steve Luttrell
West Malvern, UK

"Mark Fisher" <particl...@gmail.com> wrote in message
news:fgs7m5$3h5$1@smc.vnet.net...