{"id":20028975,"url":"https://github.com/fleschutz/base256u","last_synced_at":"2025-05-05T03:32:20.812Z","repository":{"id":130638407,"uuid":"302850125","full_name":"fleschutz/base256U","owner":"fleschutz","description":"C++ sample implementation of base256 encoding using Unicode characters.","archived":false,"fork":false,"pushed_at":"2025-04-02T09:59:45.000Z","size":680,"stargazers_count":12,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-02T10:33:54.505Z","etag":null,"topics":["base256","base256u","binary","data","encoding","unicode"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fleschutz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-10T08:10:05.000Z","updated_at":"2025-04-02T09:59:49.000Z","dependencies_parsed_at":"2023-12-25T11:24:16.115Z","dependency_job_id":"9ea09b5f-72ee-47e8-949e-37708f3ccd45","html_url":"https://github.com/fleschutz/base256U","commit_stats":null,"previous_names":["fleschutz/base256u","fleschutz/base256"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fleschutz%2Fbase256U","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fleschutz%2Fbase256U/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fleschutz%2Fbase256U/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fleschutz%2Fbase256U/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fleschutz","download_url":"https://codeload.github.com/fleschutz/base256U/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252435208,"owners_count":21747365,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["base256","base256u","binary","data","encoding","unicode"],"created_at":"2024-11-13T09:17:31.233Z","updated_at":"2025-05-05T03:32:20.780Z","avatar_url":"https://github.com/fleschutz.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"Base256 Encoding in Unicode (base256U)\n======================================\nThis repo contains a C++ sample implementation to represent binary data in base256 encoding by using Unicode characters. Typical use cases are representing safe passwords, digital keys, file checksums, identifiers, hashes, extremely big numbers, or data in character-limited messengers.\n\nWhat is base256U?\n-----------------\nEach byte is represented by exactly one Unicode character and vice versa each Unicode character represents exactly one byte. Therefore, the byte vs Unicode mapping is dead simple:\n\n| Byte   | Unicode Character                  | Description           |\n|--------|------------------------------------|-----------------------|\n|    0-9 | '0'-'9'                            | 10 digits             |\n|  10-35 | 'A'-'Z'                            | 26 uppercase letters  |\n|  36-61 | 'a'-'z'                            | 26 lowercase letters  |\n| 62-255 | 'À', 'Á', 'Â', 'Ã', 'Ä', ...       | 194 accent letters    |\n\n✔️ Advantages\n--------------\n* **Ultra compact**, e.g. just 16 characters like `5iŗ3īÛźUKĺŰÑÞbŒŜ` can encode 128-bit of data.\n* **Easy to recognize** due to the accent letters.\n* **Safe to use:** can't be remembered (no need to hide it), so people are forced to copy \u0026 paste it.\n* **Supports double-clicking** for comfortable copy \u0026 paste (all Unicode characters are non-terminal ones).\n* **Supports all Unicode versions** due to highest code point 387 (requires Unicode 1.0 or higher).\n* **Easy to implement**, see [base256U.cpp](base256U.cpp) for a C++ implementation.\n\n🔧 Installation\n----------------\nRequires **cmake** and a **C++ compiler**. Then execute in a terminal window: \n```\n\u003e git clone https://github.com/fleschutz/base256U  # or download und unzip the ZIP file (click the green button)\n\u003e cd base256U\n\u003e cmake .\n\u003e make\n\u003e ./base256U\n```\n\n🎉 Examples\n------------\n* For 64 bits: `ŖÔńĪ07ėñ`, `RŧáÃĆĶ2Õ`\n* For 128 bits: `ĺËĀ8Ę3ĩŔá0VzœĹŀî`, `ŽTĭŊõł3ÐÑęGųĢÛąĶ`, `5iŗ3īÛźUKĺŰÑÞbŒŜ`, `ņĨqvLŀŠsůØŸÙGCŰƀ`\n* For 256 bits: `ħŅŹĬšÝŋţĀĸĻňőċqâĮŹúŪßWPŞÓā8æťÁüċ`, `Ě2ħŤRŧáÃĆĶ2ÕŀSŜöĄPŞÜbŰ06lŔùö9ĬŒģ`\n* [zeichensalat](https://karme.de/zeichensalat/): a tool to make/run compressed executables copy/pastes using less than 500 unicode characters. It is intended to be used on the fediverse (or in  chats).\n\n\nComparison of Encoding Standards\n--------------------------------\n\n| Base | Name                                                     | Alphabet                      | Example | Overhead |\n|------|----------------------------------------------------------|-------------------------------|---------|----------|\n|    2 | Binary                                                   | 0 or 1                        | 0101101 | +800%    |\n|    8 | Octal                                                    | 0-7                           | 7734124 |          |\n|   10 | Decimal                                                  | 0-9                           | 3849834 |          |\n|   16 | [Hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal) | 0-9,a-f (case insensitive)    | 7a9ff34 | +100%    |\n|   32 | [Base32](https://en.wikipedia.org/wiki/Base32)           | A-Z,2-7                       | S7FFQZB | +60%     |\n|   36 | [Base36](https://en.wikipedia.org/wiki/Base36)           | 0-9,A-Z                       | 7RT99XQ |          |\n|   45 | Base45                                                   | 0-9,A-Z,space,$,%,*,+,-,.,/,: | 8X%/9:A |          |\n|   64 | [Base64](https://en.wikipedia.org/wiki/Base64)           | A-Z,a-z,0-9,+,-               | zA8r+8q | +33%/37% |\n|   85 | [Base85](https://en.wikipedia.org/wiki/Ascii85)          | !,\",#,...,z                   | 9jqo    | +25%     |\n|  256 | Base256U                                                 | 0-9,A-Z,a-z,accent letters    | ĘśŃäŞŰÀ | +~75%    |\n\n\nHow long does it take to break a random key or password?\n--------------------------------------------------------\nTrying every possible key or password (called a 'brute force attack') at one billion attempts per second:\n\n| Key Size | Key Example                        | Maximum Time Needed                       | \n|----------|------------------------------------|-------------------------------------------|\n|  40-bit  | `ŞŰÀ8Œ`                            | about 9 minutes                           |\n|  56-bit  | `ŖÔńĪ7ėñ`                          | about a year                              |\n| 128-bit  | `ĤŗwĹĦñŧīĳēaqöĜĖŅ`                 | about 5,783,128,169,837,158,197,871 years |\n| 256-bit  | `ÿőMêŽĖiĘśŃäŞŰÀ8ŒŽĎäPfSŖÔńiĪ7ėëŷò` | never, for all practical purposes         |\n\n📧 Feedback\n------------\nSend your email feedback to: markus.fleschutz [at] gmail.com\n\n🤝 License \u0026 Copyright\n-----------------------\nThis open source project is licensed under the CC0 license. All trademarks are the property of their respective owners.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffleschutz%2Fbase256u","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffleschutz%2Fbase256u","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffleschutz%2Fbase256u/lists"}