Skip to content

Small C++ program to represent binary data in base 256 encoding by using Unicode characters

License

Notifications You must be signed in to change notification settings

fleschutz/base256

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Base 256 Encoding using Unicode (B256U)

This repo contains a small C++ program to represent binary data in base 256 encoding by using Unicode characters. Typical use cases are safe passwords, digital keys, file checksums, identifiers, hashes and very big numbers.

What is B256U?

Each byte is represented by exactly one Unicode character and vice versa each Unicode character represents exactly one byte. The mapping of Byte vs Unicode is quite simple:

Byte Unicode Description
0 ... 9 '0' ... '9' 10 digits
10 ... 35 'A' ... 'Z' 26 uppercase letters
36 ... 61 'a' ... 'z' 26 lowercase letters
62 ... 255 'À', 'Á', 'Â', ... 194 umlaut characters

✔️ Advantages of B256U

  • Ultra compact: e.g. 16 characters like 5iŗ3īÛźUKĺŰÑÞbŒŜ can encode 128-bit of data.
  • Easy to recognize due to the umlaut characters.
  • Safe to use: nearly impossible to remember, so people are forced to copy & paste it.
  • Supports double-clicking for comfortable copy & paste (all Unicode characters are non-terminal ones).
  • Supports all Unicode versions due to highest code point 385 (requires Unicode 1.0 or higher).
  • Easy to implement: see the source code in main.cpp

🔧 Installation

Requires cmake and a C++ compiler. Then execute in a terminal window:

> git clone https://github.com/fleschutz/base256  # or download und unzip the ZIP file (click the green button)
> cd base256
> cmake .
> make
> ./base256

Examples of B256U

128-bit of random data in B256U: ĺËĀ8Ę3ĩŔá0VzœĹŀî, ŽTĭŊõł3ÐÑęGųĢÛąĶ, 5iŗ3īÛźUKĺŰÑÞbŒŜ, ņĨqvLŀŠsůØŸÙGCŰƀ, ŋôBĉOÍŬįēijmōįUĞÜ, Sőś6ŬŹŠęűöìÇthTK.

256-bit of random data in B256U: ħŅŹĬšÝŋţĀĸĻňőċqâĮŹúŪßWPŞÓā8æťÁüċ, Ě2ħŤRŧáÃĆĶ2ÕŀSŜöĄPŞÜbŰ06lŔùö9ĬŒģ, āLë2lÏäöĥųŧpğĨķŇHĺ4LăsŸđĵ_űLeYhĩ, ÂŚÔJàįŶļcvàPĈčIJċĉIJĂūęŻÉĢJĸķ3ğPĭŠ

How long does it take to break a random key or password?

Required is a good random generator. Then trying every possible key or password (called a 'brute force attack') at one billion attempts per second:

Key Size Key Example Maximum Time Needed
40-bit ŞŰÀ8Œ about 9 minutes
56-bit ŖÔńĪ7ėñ about a year
128-bit ĤŗwĹĦñŧīijēaqöĜĖŅ about 5,783,128,169,837,158,197,871 years
256-bit ÿőMêŽĖiĘśŃäŞŰÀ8ŒŽĎäPfSŖÔńiĪ7ėëŷò never, for all practical purposes

📧 Feedback

Send your email feedback to: markus.fleschutz [at] gmail.com

🤝 License & Copyright

This open source project is licensed under the CC0 license. All trademarks are the property of their respective owners.

About

Small C++ program to represent binary data in base 256 encoding by using Unicode characters

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published