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