Ask HN: Friendly Alternative to Base64?
I'm working on a project where I need to communicate ed25519 keys from person-to-person, ideally. I've base64-encoded them, and they're short enough for that to be feasible. Is there any way I could encode this information into something like a made-up word, or some other strategy? I've thought of QR codes, but those don't work as well over long distances. I'm hoping to find something that allows keys to be spoken.
Thank you.
6 comments
[ 4.5 ms ] story [ 20.4 ms ] threadIf the two people can agree on the pronunciation of various symbols, then you can choose a more "dense" encoding like Base85.
If the key is designed to be spoken and heard, then you're better off avoiding case-sensitive and sound-alike symbol set altogether. Instead, generate a dictionary of words that is designed to reduce the possibility of mistaking one word for another (something like the phonetic alphabet: https://en.wikipedia.org/wiki/NATO_phonetic_alphabet), and then assign each symbol to a word.
The larger your dictionary, the shorter each key exchange will be but also the chance of including sound-alike words increases as well.
A dictionary of 256 words means you would need 68 per key but if you double the dictionary size, you half the number of words per key.
And of course this falls apart if two people exchanging keys don't speak the language of the dictionary. Although this is (usually) the case with just numbers and letters as well.
They need a secret to connect two computers, that can be passed by phone by non technical people. They use(d?) a nine digit number, separated in three parts, i.e.: 872 581 234
You need to transmit a much longer key, but perhaps you can transform it into base8 and use digits (skip the 0 to avoid confusions, and the 9). You definitively need some local check to ensure that each block is correct. Perhaps add a 8-module check to each block: 8723 5816 2343
Bubble Babble http://wiki.yak.net/589/Bubble_Babble_Encoding.txt
PGP wordlist https://en.wikipedia.org/wiki/PGP_word_list
Only codegroup conforms to the telegraphic convention of all upper case letters, and passes the “telephone test” of being readable without any modifiers such as “capital” and “lower-case”. Avoiding punctuation marks and lower case letters makes the output of codegroup much easier to transmit over a voice or traditional telegraphic link.