Reservoir Dogs sorted this out by assigning people colors (Mr.Pink, Mr.White, Mr.Green, etc). That was a bit different though because it was also to keep them anonymous from each other.
But what about cases where people know each other and often meet face to face? They might want to also meet in an open chat room (e.g. IRC). They need to be able to recognize each other in the chat room but they also don’t want their real identities exposed to outsiders (who are welcome in the chat room).
Suppose there is only one “Bill” in the group. If we do a Shoco compression on that string and then base32-encode it, we get “iju2k”. Not great because it’s not even pronouncable. And also probably not good that it’s reversible (as opposed to a 1-way hash).
We can get pronouncable strings using the advanced password generator:
$ apg -n 60 -m 4 -x 8 -M L -c /dev/random | column
But unlike passwords, we want the word to associate to another string.
Constructing something just from initials is not great because many people only know others by their given name.
Ideas? Let’s say these are facts and goals:
- Cannot rely on members of the group to share their handles in person (too much effort - it’s hard enough just to remember people’s in-person names).
- Should not be easily algorithmically reversible. Because if there are two Bobs, they might only be distinguished within the group by last name. The algo should not force the two Bobs to be fully exposed.
- Someone might pop into IRC for the first time without having a chance to reveal their handle to others in advance.
- Ideally, it should be remotely possible for someone to come up with their own name. E.g. if Howard Wolowitz wants a name like RocketMan, he should be able to invent a name so long as it follows some rules to ensure a degree of distinction and possibility for someone who knows all given names of people to reverse that to “Howard”. But what the rules are is where it gets tricky. Perhaps, in the end, he would have to settle for “FruitLoop”.
Possible start of an answer:
$ curl https://humanhash.dev/api/v1/hash/"$(md5sum <<< 'bill' | awk '{print $1}')?wordlist=cyberpunk" | json_pp
{
"hash" : "rewire-trojan-forge-extract",
"inputHash" : "96aef335c73103a1f0d17362351e8f54",
"wordlist" : "cyberpunk"
}
Perhaps from there, Bill could choose one of the 4 words in the resulting hash for his handle. Then if someone wants to know: Is “trojan” Bill? They need to run the human hash on every first name of those in the group until a match hits.
Problems: possible pitfall is likeliness of clashes. The humanhash.dev vocabularly is only 256 words. And obviously travel-solar-kookaburra-plunge is too long for IRC. And bloody hell, humanhash.dev is a Cloudflare site. So pro-free-world folks need to grab code that is not part of Debian. Could be easy… it’s just two Python scripts, but unclear how to use them. It’s included in the python3-django-q package but perhaps overkill to install 10 pkgs to get it.
(edit) There is also a bubble babble algorithm and others, but let’s add another nice-to-have constraint:
- Should be able to use easily available tools (e.g. from the official Debian repos).
(edit) Bubble Babble has been implemented in the Debian pkg libdigest-bubblebabble-perl. It installs with spamassassin but obviously could be installed on its own. To see the man page of sorts:
$ perldoc Digest::BubbleBabble
To execute:
$ perl -MDigest::BubbleBabble=bubblebabble -E'say bubblebabble(Digest => shift)' 'Howard'
If it doesn’t have to be a software solution:
If they each get to choose their own name, they could use https://www.behindthename.com/random/random.php?gender=both&number=2&sets=1&surname=&all=yes
If it needs to be non-name names, this would work https://diceware.dmuth.org/
Both of these have a very low chance of duplicate names
Lol software engineers always trying to solve simple problems with a complex algorithm.
Of course. There’s a good xkcd or something for this you would love but I can’t find it… something like “the more I read about Alice and Bob, the more I am convinced that they should just meet in person”.


