Skip to content

polarwinkel/huuid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

huuid - human UUIDs

python3-library to convert uuids forth and back to a human-readable and pronounceable format

What is huuid

hhuid does a bijective transformation from uuids to a format that can be read, pronounced and typed a lot better than the default formats. No Information is lost in the mapping.

Here is an example-output of the demo.py in the tests-folder:

generated uuid:          f3ad6cef-2732-4b18-97dd-137a459eb656
human-readable:          tapratnaz-vorjonfif-Tezjozdin-sejgipneh
Afer back-translation:   f3ad6cef-2732-4b18-97dd-137a459eb656
--- other usecases: ---
first 32bit human-readable:  tapratnaz
generated 32bit-Password:    Sunmuhnud
generated 64bit-Password:    Vezvegdum-ladzibkal

How to use huuid

Install it using pip:

pip install huuid

or just put the folder huuid in your project-root. (Jep, just that one file - that's all!)

Then in python import it in your code with

import huuid

and convert any uuid-object or uuid-string to a huuid-string with

huuid.uuid2human(myUuidObject)

Optionally you can limit the huuid-string to the 32, 64 or 96 bit:

huuid.uuid2human(myUuidObject, 64)

Convert it back to a uuid-string with

huuid.human2uuid(myUuidObject)

Background

The hexadecimal representation of the UUID is translated to letters that have an unambiguous pronounciation. The 2nd, and then every third letter is a vowel, the other ones are consonants which makes up a well pronounced word that sounds like it is made up of syllables.

There are 5 vowels and 16 consonants (just unambiguous ones) being used, and (only) for the first letter capitals are allowed. (And a capital-C additional to the 16 chosen unambiguous consonants to reach 32bit with 9 letters)

With this pattern there are a little more than 2^32 possibilities to generate a word with 9 letters. 4 "Words" hit the 128bit of UUIDs (>10^38).

Dependencies

This only uses the python3-modules uuid and math.

Credits

This is highly inspired by

https://arxiv.org/html/0901.4016

published by Daniel Shawcross Wilkerson and its implementation:

https://github.com/dsw/proquint

About

Human UUIDs for python

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages