Converting a number back to it's original string (that was hashed to generate that number)

Dave Angel d at
Wed Jan 23 14:58:45 CET 2013

On 01/23/2013 08:38 AM, Ferrous Cranus wrote:
> Please DON'T tell me to save both the pin <=> filepath and associate them (that can be done by SQL commands, i know)
> I will not create any kind of primary/unique keys to the database.
> I will not store the filepath into the database, just the number which indicates the filepath(html page).
> Also no external table associating fielpaths and numbers.
> i want this to be solved only by Python Code, not database oriented.
> That is:  I need to be able to map both ways, in a one to one relation, 5-digit-integer <=> string
> int( hex ( string ) ) can encode a string to a number. Can this be decoded back? I gues that can also be decoded-converted back because its not losing any information. Its encoding, not compressing.
> But it's the % modulo that breaks the forth/back association.
> So, the question is:
> HOW to map both ways, in a one to one relation, (5-digit-integer <=> string) without losing any information?

Simple.  Predefine the 100,000 legal strings, and don't let the user use 
anything else.  One way to do that would be to require a path string of 
no more than 5 characters, and require them all to be of a restricted 
alphabet of 10 characters.  (eg. the alphabet could be 0-9, which is 
obvious, or it could be ".aehilmpst" (no uppercase, no underscore, no 
digits, no non-ascii, etc.)

In the realistic case of file paths or URLs, it CANNOT be done.


More information about the Python-list mailing list