Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Re: Compact MD5 representation

by Anonymous Monk
on Mar 20, 2001 at 02:55 UTC ( [id://65570]=note: print w/replies, xml ) Need Help??


in reply to Re: Compact MD5 representation
in thread Compact MD5 representation

There's nothing reckless about taking only part of an md5 hash. The MD5 algorithm is a good hashing algorithm and ensures that small changes to the source will result in big changes to the hash, so you don't have to worry about similar inputs producing similarities in the (first|last|middle) X bits. As for hoping there are no collisions, reducing the hash size does increase the chance of collision, but there's no guarantee that each full length md5 will be unique. It should be trivial to write code which checks for a collision and fixes it (by appending characters onto the input data until the md5 is unique, for example).

Replies are listed 'Best First'.
Re: Re: Re: Compact MD5 representation
by Anonymous Monk on Mar 20, 2001 at 03:29 UTC
    I'm a php person, so I can't offer code, but I do understand the question which is being asked.

    Rather than showing a url of /?a=123456, the questioner is looking for a url that says /?a=rqz instead. By using the full range of alphanumeric characters, he is hoping to reduce the MD5 from a 32 character string (using 0-9,a-f), into something much smaller, maybe a 12 character string (using 0-9, a-z). This has the benefit of being shorter, while still spanning the same range of values (2^32) as MD5.

    php has the function: string base_convert (string number, int frombase, int tobase), which I'm sure has an equivalent in perl. Once you find this function the problem is reduced to:

    $new_number = base_convert( md5('whatever'), 16, 36 ); // 10 digits + 26 alphanumeric

    Hopefully some perl guru will be able to point you in the right direction.

    --Robert

      That's sorta what was already being gotten at by using the _base64 version rather than the _hex version. Read the other responses in this thread.

      -- Randal L. Schwartz, Perl hacker

      and mysql has it just as easy: "SELECT CONV(md5, 16, 36) from table"

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://65570]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others meditating upon the Monastery: (4)
As of 2024-04-25 17:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found