X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=cipher.py;fp=cipher.py;h=b1413691fb025aaf6a450bde0efa00d9163b5fee;hb=7c5fd4061335669401bb298b5cec519b1f9afbc8;hp=4c3f14b00ab3c8ce8c0f37aae144d9470bdb8d35;hpb=f1a99f2d70045b6fd19ded876c9a7584099b0e18;p=cipher-tools.git diff --git a/cipher.py b/cipher.py index 4c3f14b..b141369 100644 --- a/cipher.py +++ b/cipher.py @@ -395,8 +395,21 @@ def vigenere_decipher(message, keyword): pairs = zip(message, cycle(shifts)) return cat([caesar_decipher_letter(l, k) for l, k in pairs]) -beaufort_encipher=vigenere_decipher -beaufort_decipher=vigenere_encipher + +def beaufort_encipher(message, keyword): + """Beaufort encipher + + >>> beaufort_encipher('inhisjournaldatedtheidesofoctober', 'arcanaimperii') + 'sevsvrusyrrxfayyxuteemazudmpjmmwr' + """ + shifts = [pos(l) for l in sanitise(keyword)] + pairs = zip(message, cycle(shifts)) + return cat([unpos(k - pos(l)) for l, k in pairs]) + +beaufort_decipher = beaufort_encipher + +beaufort_variant_encipher=vigenere_decipher +beaufort_variant_decipher=vigenere_encipher def polybius_grid(keyword, column_order, row_order, letters_to_merge=None,