Tidied affine cipher and decipher
[cipher-tools.git] / cipher.py
index 6b49d46974171e26edd615cdbb8e8a7985bf6720..273da4681040feff53f28d7fcee21ff22ad1a923 100644 (file)
--- a/cipher.py
+++ b/cipher.py
@@ -66,10 +66,10 @@ def every_nth(text, n):
     """Returns n strings, each of which consists of every nth character, 
     starting with the 0th, 1st, 2nd, ... (n-1)th character
     
-    >>> every_nth(string.ascii_lowercase, 5)                                                                                                               
-    ['afkpuz', 'bglqv', 'chmrw', 'dinsx', 'ejoty']                                                                                                         
+    >>> every_nth(string.ascii_lowercase, 5)
+    ['afkpuz', 'bglqv', 'chmrw', 'dinsx', 'ejoty']
     >>> every_nth(string.ascii_lowercase, 1)                                                                                                              
-    ['abcdefghijklmnopqrstuvwxyz']                                                                                                                         
+    ['abcdefghijklmnopqrstuvwxyz']
     >>> every_nth(string.ascii_lowercase, 26)
     ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
     """
@@ -194,7 +194,6 @@ def affine_encipher_letter(letter, multiplier=1, adder=0, one_based=True):
         if one_based: 
             letter_number += 1
         raw_cipher_number = (letter_number * multiplier + adder)
-        cipher_number = 0
         if one_based: 
             cipher_number = (raw_cipher_number - 1) % 26
         else:
@@ -217,13 +216,9 @@ def affine_decipher_letter(letter, multiplier=1, adder=0, one_based=True):
         else:
             alphabet_start = ord('a')
         cipher_number = ord(letter) - alphabet_start
-        if one_based: 
-            cipher_number += 1
-        plaintext_number = 0
         if one_based:
-            plaintext_number = (modular_division_table_one_based[multiplier][(cipher_number - adder + 26) % 26] - 1) % 26
+            plaintext_number = (modular_division_table_one_based[multiplier][(cipher_number + 1 - adder + 26) % 26] - 1) % 26
         else:
-            #plaintext_number = (modular_division_table[multiplier][cipher_number] - adder) % 26
             plaintext_number = modular_division_table[multiplier][(cipher_number - adder + 26) % 26]            
         return chr(plaintext_number + alphabet_start)
     else: