Great idea, op ;)
Edit: this one definitely has had more thought out into it, specifically I like that the sort order of different input is preserved in the output.
Much easier to compare at a glance, and have a chance of remembering (by sight -- "is this the same hash", not "let me write down the hash from nothing").
The easiest way to check if a hash matches is to use ==. Or === if your language has problems with numbers in strings.
The only problem is that these emojis probably require two bytes each (more?), so we’re encoding 10 bits into 16 bits (60% overhead) instead of 6 bits to 8 bits (33% overhead)
It’s a nice idea though. These are clearly easier to remember and compare. Just don’t expect emojis to take less space than base64.
Am I missing something here...?
this is in the standard library as https://golang.org/pkg/io/#ReadFull
cat encode.go | openssl dgst -binary -sha1 | ecoji
Wouldn't "A" be "A", because it is a subset of 1024?
Looks more like obfuscation code for me.
They just mean that the alphabet they use has N glyphs in it to represent the numbers 0-N. For example, base10 can be:
The ASCII datum "A" doesn't turn to "A" in Base64, and in fact it doesn't turn to any specific Base64 code. In a stream of 8 bit characters where "A" occurs, that "A" byte will be split into two 6-bit groups in one of three ways: 2-6, 4-4 or 6-2. In those groups that get only 2 or 4 bits of that "A", there will likely be other non-zero bits from adjacent characters/data which help determine the code. In base 1024, we have 10 bit units that can be packed with data.
The Base64 code letter "A" is the first entry in the Base64 table table; it corresponds to zero: a sequence of six zero bits.
An advantage of emoji is that it makes it so easy to communicate a non-verbal expression. Looking at my frequently used list: there's the thinking, facepalm, sly look, and so on... they make text messaging so much more human.