# Copyright 2016 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # =*= License: GPL-3+ =*= import pgpwordlist _words = pgpwordlist.pgp_word_list def _make_reverse_lookup(words): rev = {} for hexstr, t in words.items(): rev[t[0]] = hexstr rev[t[1]] = hexstr return rev _w2hex = _make_reverse_lookup(_words) def get_word(hexstr, offset): t = _words[hexstr.lower()] return t[offset % 2] def get_hex(word): return _w2hex[word.lower()] def hex_to_words(hexstr): words = [get_word(h, i) for i, h in enumerate(_hex_bytes(hexstr))] return ' '.join(words) def _hex_bytes(hexstr): for i in range(0, len(hexstr), 2): yield hexstr[i:i+2] def words_to_hex(wordstr): return ''.join(get_hex(w) for w in wordstr.split())