Last active
April 28, 2021 00:01
-
-
Save fabiolimace/0001fb4bf98ef0d906b70210cbc0eacc to your computer and use it in GitHub Desktop.
Generate a list of UUIDs in base-16, base-32 or base-64
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/env python3 | |
| import string | |
| from uuid import uuid4 | |
| alphabet_b16 = "0123456789abcdef" # base-16 | |
| alphabet_b32 = "abcdefghijklmnopqrstuvwxyz234567" # base-32 | |
| alphabet_b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" # base-64 | |
| def basen(number, base, alphabet): | |
| '''https://stackoverflow.com/questions/2267362/how-to-convert-an-integer-to-a-string-in-any-base''' | |
| output = "" | |
| while number: | |
| output += alphabet[number % base] | |
| number //= base | |
| return output[::-1] or "0" | |
| def print_list(base, length, alphabet): | |
| padding = length | |
| padding_char = alphabet[0] | |
| for i in range(0, 1000): | |
| uuid = uuid4() | |
| number = uuid.int | |
| encoded = "" | |
| if base == 32: | |
| padding = 32 | |
| number = number << (8 * 4) # padding with 32 bits (4 bytes) | |
| if base == 64: | |
| padding = 24 | |
| number = number << 16 # padding with 16 bits (2 bytes) | |
| encoded = basen(number, base, alphabet) | |
| print('{"' + str(uuid) + '", "' + encoded.rjust(padding, padding_char)[:length] + '"}, //') | |
| # CHOOSE ONE OPTION: | |
| print_list(16, 32, alphabet_b16) # base-16 | |
| # print_list(32, 26, alphabet_b32) # base-32 | |
| # print_list(64, 22, alphabet_b64) # base-64 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment contains 3 lists generated by the script. Each list contains 10 lines.
base-16
{"7707388c-e508-4565-9963-77a6f592741c", "7707388ce5084565996377a6f592741c"}, // {"7324c591-5d29-4e9b-85e8-2302a52903bf", "7324c5915d294e9b85e82302a52903bf"}, // {"449ea876-f40b-4ae2-9a0d-8605372aa00a", "449ea876f40b4ae29a0d8605372aa00a"}, // {"43386ccb-edd3-4759-8bfd-23a705794cd6", "43386ccbedd347598bfd23a705794cd6"}, // {"8ed4c08f-a0ce-435a-969f-76cabb1924ba", "8ed4c08fa0ce435a969f76cabb1924ba"}, // {"0ed715aa-ab15-425b-9b39-4df3035def0b", "0ed715aaab15425b9b394df3035def0b"}, // {"5d6f78f9-07d7-4517-b0ce-153b773de21b", "5d6f78f907d74517b0ce153b773de21b"}, // {"2fc58f03-c9dc-4597-976c-b957146134ba", "2fc58f03c9dc4597976cb957146134ba"}, // {"8670ff73-ef3d-45ac-85d9-0c9a56e1a93c", "8670ff73ef3d45ac85d90c9a56e1a93c"}, // {"18d0b988-b004-46ae-896c-e62a9923cfa7", "18d0b988b00446ae896ce62a9923cfa7"}, //base-32
{"178adb4a-f650-4693-af85-2f87e6300f0e", "c6fnwsxwkbdjhl4ff6d6mmapby"}, // {"8a9980af-6dc8-431b-8d11-c1431264ad02", "rkmybl3nzbbrxdiryfbrezfnai"}, // {"e0d47c80-71b1-438d-a3b5-4ea52d5564d9", "4dkhzadrwfby3i5vj2ss2vle3e"}, // {"d94eca70-8b38-43c0-8f12-6d34619f4be6", "3fhmu4elhbb4bdysnu2gdh2l4y"}, // {"d4163fb2-22f7-45a3-b168-fd0934dc35f6", "2qld7mrc65c2hmli7uetjxbv6y"}, // {"188abcbe-676e-430d-9a1d-6fb789054350", "dcflzpthnzbq3gq5n63ysbkdka"}, // {"78f90c81-bc8f-4978-9143-de86c3474918", "pd4qzan4r5exrekd32dmgr2jda"}, // {"945440d0-4c8c-41af-ad56-49f5bbb7f584", "srkebucmrra27lkwjh23xn7vqq"}, // {"40d0fca9-c280-48b3-86a7-8619184b8c95", "idipzkocqbelhbvhqymrqs4msu"}, // {"2f951d13-360e-49ea-bc71-6b848203b09e", "f6kr2ezwbze6vpdrnociea5qty"}, //base-64
{"aa3801c7-3d26-4f76-91a0-c69cb8004e86", "qjgBxz0mT3aRoMacuABOhg"}, // {"b1d794bf-e9f5-47c1-8eda-6ba6728fbc19", "sdeUv+n1R8GO2mumco+8GQ"}, // {"b344a912-5fcb-45ca-8545-dd50d60f2036", "s0SpEl/LRcqFRd1Q1g8gNg"}, // {"17361b90-ac95-433d-ae79-831403f24636", "FzYbkKyVQz2ueYMUA/JGNg"}, // {"ae50fe38-a203-4682-a5df-a8d2e7d7ea82", "rlD+OKIDRoKl36jS59fqgg"}, // {"95b34e0b-b49f-41d7-9323-f8095ce6ebf5", "lbNOC7SfQdeTI/gJXObr9Q"}, // {"ac0e949c-6aed-44ee-a240-fe3adb6ad608", "rA6UnGrtRO6iQP4622rWCA"}, // {"e37792b8-4eee-43d2-8845-fbbcc8f797ea", "43eSuE7uQ9KIRfu8yPeX6g"}, // {"fa38f185-1c94-472b-b610-3de307521830", "+jjxhRyURyu2ED3jB1IYMA"}, // {"303e1869-d95a-407f-9bf6-494081489410", "MD4YadlaQH+b9klAgUiUEA"}, //