Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Reproducing a hash code

76 views
Skip to first unread message

Steve Luttrell

unread,
Nov 5, 2007, 5:03:22 AM11/5/07
to
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


michael.p...@googlemail.com

unread,
Nov 6, 2007, 3:46:17 AM11/6/07
to
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


Mark Fisher

unread,
Nov 7, 2007, 6:31:17 AM11/7/07
to

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


Steve Luttrell

unread,
Nov 8, 2007, 6:11:25 AM11/8/07
to
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...

0 new messages