Day: August 28, 2019

Personal GUIDs – Fixed

Six years ago I wrote the article Personal GUIDs. This introduced a technique for assigning a unique unchanging type 5 GUID to each person on the planet. It made a string of the format:

"Surname;GivenNames;Sex;CountryOfBirth;PlaceOfBirth;DateOfBirth,"

which in theory should be unique for everyone, and turned it into a type 5 GUID using the Namespace GUID:

 {5b390b3f-9a62-508a-b235-6e6e8d270720}

(Read https://waterjuiceweb.wordpress.com/2013/06/16/type-3-and-5-guids/ for a description on how a type 5 GUID is made). I wrote a C program to generate the GUIDs.

Unfortunately, I made a mistake!

The C code did not use the DateOfBirth value in creating the string to be hashed. This meant only the first 5 fields were used. As a result the GUIDs produced did not match the description. Also it would mean two people born in the same place with same name but at different times could generate the same GUID.

I only just noticed the error while I was including the code into a new library I’m producing (Stay tuned for WjGuid coming soon!) and I was testing the results against an online type 5 GUID generator.

I have fixed the code and released PersonalGuid 1.0.1. The latest version is available here:

 >PersonalGuid.exe Doe John m Australia Sydney 19700101
ID: DOE;JOHN;M;AUSTRALIA;SYDNEY;19700101
{897469e0-c10b-5829-bd15-86309b1523cf}

To manually produce the personal guid without this tool you can use a site such as https://www.toolswow.com/generator/uuid-v5

For NameSpace mode use UUID and use the value ” {{5b390b3f-9a62-508a-b235-6e6e8d270720}”.

ScreenShot.png
Screenshot from https://www.toolswow.com/generator/uuid-v5

I additionally made a Python version that will work in Python 2 or 3. The python file is inside the .zip, but I have included it here as well.