fixed autokey
This commit is contained in:
parent
493d31e3c6
commit
de98ad4268
2 changed files with 14 additions and 32 deletions
|
@ -25,34 +25,27 @@ def vigenere_de(ctext, vk):
|
|||
result.append(ch)
|
||||
return ''.join(result)
|
||||
|
||||
|
||||
def autokey_en(ptext, ak):
|
||||
result = []
|
||||
ptext = ptext.upper()
|
||||
current_key = ak
|
||||
for ch in ptext:
|
||||
k = ord(ak.upper()) if isinstance(ak, str) else ak
|
||||
out = []
|
||||
for ch in ptext.upper():
|
||||
if ch.isalpha():
|
||||
shift = (current_key - ord('A')) % 26
|
||||
cipher_char = chr((ord(ch) - ord('A') + shift) % 26 + ord('A'))
|
||||
result.append(cipher_char)
|
||||
current_key = ord(cipher_char)
|
||||
out_ch = chr((ord(ch) - 65 + (k - 65)) % 26 + 65)
|
||||
out.append(out_ch); k = ord(ch)
|
||||
else:
|
||||
result.append(ch)
|
||||
return ''.join(result)
|
||||
out.append(ch)
|
||||
return ''.join(out)
|
||||
|
||||
def autokey_de(ctext, ak):
|
||||
result = []
|
||||
ctext = ctext.upper()
|
||||
current_key = ak
|
||||
for ch in ctext:
|
||||
k = ord(ak.upper()) if isinstance(ak, str) else ak
|
||||
out = []
|
||||
for ch in ctext.upper():
|
||||
if ch.isalpha():
|
||||
shift = (current_key - ord('A')) % 26
|
||||
plain_char = chr((ord(ch) - ord('A') - shift) % 26 + ord('A'))
|
||||
result.append(plain_char)
|
||||
current_key = ord(plain_char)
|
||||
p = chr((ord(ch) - 65 - (k - 65)) % 26 + 65)
|
||||
out.append(p); k = ord(p)
|
||||
else:
|
||||
result.append(ch)
|
||||
return ''.join(result)
|
||||
out.append(ch)
|
||||
return ''.join(out)
|
||||
|
||||
def operator(argument,ptext,ak,vk):
|
||||
match argument:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue