๐ ๐ An easier way to compare hashes /fingerprints, when dealing human weak link ๐ ๐
A curated list of 256 emojis that are not entirely similar. Using http://www.webpagefx.com/tools/emoji-cheat-sheet/ and http://www.unicode.org/emoji/charts/full-emoji-list.html to compare them. With 256 as that is 8bit/1byte, and the hexadecimal output that is 2 hex characters.
So 2 hex positions are 1 emoji! Would you rather compare 60 hexadecimal characters or only 30 emoji?! ๐บ
For information on the draft for broader practice, see the draft. Perma-URL:
go get github.com/emojisum/emojisum
This uses github.com/kyokomi/emoji
to print to the console, but also gives the string ouptut for easy pasting to github/markdown.
$> emojisum main.go
SHA1(main.go)= 14b09535217ca8f5f47f4665e2266e686f0728b4
SHA1(main.go)= :bird::red_car::on::crystal_ball::calendar::lemon::pray::warning::violin::lollipop::facepunch::hearts::tm::children_crossing::hourglass::heavy_plus_sign::house::ant::clap::rocket:
SHA1(main.go)= ๐ฆ ๐ ๐ ๐ฎ ๐ ๐ ๐ โ ๏ธ๐ป ๐ญ ๐ โฅ๏ธโข๏ธ๐ธ โ๏ธโ ๐ ๐ ๐ ๐
Like so!
SHA1(main.go)= ๐ฆ๐๐๐ฎ๐๐๐
Rather than relying on this simple tool to do the checksum itself, you will likely want to rely on OpenSSL or coreutils for checksumming.
emojisum
can just take those formats on stdin:
$> sha1sum main.go | emojisum -pg
7656835947b4c6da272023c56b6f2529511bf88b main.go
:jp::gb::metal::goat::family::rocket::smiley_cat::swimmer::chocolate_bar::cactus::candy::smile::honeybee::house::cherries::cloud::fries::bow::wavy_dash::musical_score: main.go
๐ฏ๐ต ๐ฌ๐ง ๐ค ๐ ๐ช ๐ ๐บ ๐ ๐ซ ๐ต ๐ฌ ๐ ๐ ๐ ๐ โ๏ธ๐ ๐ ใฐ๏ธ ๐ผ main.go
Like so:
๐ฏ๐ต ๐ฌ๐ง ๐ค ๐ ๐ช ๐ ๐บ ๐ ๐ซ ๐ต ๐ฌ ๐ ๐ ๐ ๐ โ๏ธ๐ ๐ ใฐ๏ธ ๐ผ main.go
$> openssl sha1 main.go |emojisum -pb
SHA1(main.go)= 7656835947b4c6da272023c56b6f2529511bf88b
SHA1(main.go)= :jp::gb::metal::goat::family::rocket::smiley_cat::swimmer::chocolate_bar::cactus::candy::smile::honeybee::house::cherries::cloud::fries::bow::wavy_dash::musical_score:
SHA1(main.go)= ๐ฏ๐ต ๐ฌ๐ง ๐ค ๐ ๐ช ๐ ๐บ ๐ ๐ซ ๐ต ๐ฌ ๐ ๐ ๐ ๐ โ๏ธ๐ ๐ ใฐ๏ธ ๐ผ
And like so:
SHA1(main.go)= ๐ฏ๐ต ๐ฌ๐ง ๐ค ๐ ๐ช ๐ ๐บ ๐ ๐ซ ๐ต ๐ฌ ๐ ๐ ๐ ๐ โ๏ธ๐ ๐ ใฐ๏ธ ๐ผ
Use the golang library to access the mapped emoji words:
package main
import (
"fmt"
"github.com/emojisum/emojisum/emoji"
)
func main() {
for i := 0; i < 255; i++ {
fmt.Printf("%d (%2.2x):\n", i, i)
for _, word := range emoji.Map(byte(i)) {
fmt.Printf(" - %s\n", emoji.CodepointToUnicode(word))
}
}
}
In ./contrib/emojisum-rs/
you'll find a rust library for emojisum.
cd ./contrib/emojisum-rs/
cargo build
cargo test