{"id":18391303,"url":"https://github.com/thblt/pgp-words","last_synced_at":"2025-10-08T23:07:02.555Z","repository":{"id":68387352,"uuid":"90744057","full_name":"thblt/pgp-words","owner":"thblt","description":"Make IDs and fingerprints easier to verify, using the PGP Word List. Also exists in Rust https://github.com/thblt/pgp-words.rs/","archived":false,"fork":false,"pushed_at":"2021-11-03T14:03:40.000Z","size":26,"stargazers_count":16,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-08T23:07:01.308Z","etag":null,"topics":["cryptography","fingerprint","pgp-words","voice"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thblt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-09T12:38:47.000Z","updated_at":"2024-08-13T14:10:32.000Z","dependencies_parsed_at":"2023-02-27T21:45:57.965Z","dependency_job_id":null,"html_url":"https://github.com/thblt/pgp-words","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/thblt/pgp-words","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thblt%2Fpgp-words","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thblt%2Fpgp-words/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thblt%2Fpgp-words/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thblt%2Fpgp-words/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thblt","download_url":"https://codeload.github.com/thblt/pgp-words/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thblt%2Fpgp-words/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000730,"owners_count":26082862,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cryptography","fingerprint","pgp-words","voice"],"created_at":"2024-11-06T01:51:26.749Z","updated_at":"2025-10-08T23:07:02.506Z","avatar_url":"https://github.com/thblt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pgp-words\n\n`pgp-words` is an implementation of the\n[PGP Word List](https://en.wikipedia.org/wiki/PGP_word_list).  The\nword list was designed to make it easy to convey sequences of bytes\nusing only voice, and is particularly suited for transmitting key\nfingerprints and other similar sequences over the phone. Even in the\nsame physical place, it's easier to just read a bunch of words out\nloud than to spell a sequence of hex digits (was that 3 times `F` or\n`3F`?)\n\nEach word represents exactly one byte.  To avoid errors, there are\nactually 512 words in the list (two per possible byte value) and words\nare selected depending on the parity of the byte position.  For\nexample, `0x9e` is *quiver* if the byte position in the sequence is an\neven number, *onlooker* if it is odd.\n\n`pgp-words` is a single-file script written in Python, depends only on\ncore features, its source code is really short (314 SLOCs, 256 of them\nbeing the word list) and can be easily audited. It should work on any\nsystem with a Python interpreter, and is compatible with Python 2 and\n3.\n\n# Usage\n\n`pgp-words` reads a fingerprint or any other hexadecimal sequence,\neither from the command line or the standard input, and converts it\ninto words:\n\n```\n$ pgp-words d1c2 25e4 26c6 33dd 94d1  a7e8 c3f4 08aa 9b34 2488\n\nd1c2 25e4 26c6 33dd 94d1 a7e8 c3f4 08aa 9b34 2488:\n\tstairway repellent bombast tradition\n\tbookshelf responsive chisel tambourine\n\tPluto scavenger repay typewriter\n\tsnowcap Virginia aimless pedigree\n\tpuppy confidence bluebird maritime\n\ngpg --fingerprint 0x33CDE511  | pgp-words\n\nEA5B 81C5 6498 8C73 EE90  DEE9 BAF1 E072 33CD E511:\n        Trojan exodus minnow resistor\n        flytrap narrative offload hurricane\n        tycoon millionaire tactics ultimate\n        shadow vacancy tapeworm holiness\n        chisel sandalwood topmost Babylon\n```\n\n - When called with command-line arguments, it concatenates them and treats them as a single value.\n - When called from stdin, it treats each lins as a single value and silently ignores invalid lines.\n - For simplicity, spaces, tabs and newlines are ignored.\n\n# Installation\n\nEither copy `pgp-words` somewhere in your `$PATH` and `chmod +x pgp-words`, or just run `sudo python setup.py install` from the root of the repository.\n\nTo uninstall, simply remove the `pgp-words` script from wherever you put it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthblt%2Fpgp-words","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthblt%2Fpgp-words","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthblt%2Fpgp-words/lists"}