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
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
--
Steve Luttrell
West Malvern, UK
"Mark Fisher" <particl...@gmail.com> wrote in message
news:fgs7m5$3h5$1...@smc.vnet.net...