Added Lab2/Lab3 IS
This commit is contained in:
parent
011d5aded1
commit
0755dd4b76
6 changed files with 109 additions and 140 deletions
|
@ -1,80 +1,58 @@
|
|||
def vigenere_en(ptext, vk):
|
||||
result = ""
|
||||
result = []
|
||||
ptext = ptext.upper()
|
||||
vk = vk.upper()
|
||||
|
||||
kl = len(vk) ## key length
|
||||
|
||||
for i in range(len(ptext)):
|
||||
ch = ptext[i]
|
||||
if 32 <= ord(ch) <= 47:
|
||||
result += ch
|
||||
elif 65 <= ord(ch) <= 90:
|
||||
kl = len(vk)
|
||||
for i, ch in enumerate(ptext):
|
||||
if ch.isalpha():
|
||||
shift = (ord(vk[i % kl]) - ord('A')) % 26
|
||||
result += chr((ord(ch) - ord('A') + shift) % 26 + ord('A'))
|
||||
result.append(chr((ord(ch) - ord('A') + shift) % 26 + ord('A')))
|
||||
else:
|
||||
result += ch
|
||||
|
||||
return result
|
||||
result.append(ch)
|
||||
return ''.join(result)
|
||||
|
||||
|
||||
def vigenere_de(ctext, vk):
|
||||
result = ""
|
||||
result = []
|
||||
ctext = ctext.upper()
|
||||
vk = vk.upper()
|
||||
|
||||
kl = len(vk)
|
||||
|
||||
for i in range(len(ctext)):
|
||||
ch = ctext[i]
|
||||
if 32 <= ord(ch) <= 47:
|
||||
result += ch
|
||||
elif 65 <= ord(ch) <= 90:
|
||||
for i, ch in enumerate(ctext):
|
||||
if ch.isalpha():
|
||||
shift = (ord(vk[i % kl]) - ord('A')) % 26
|
||||
result += chr((ord(ch) - ord('A') - shift + 26) % 26 + ord('A'))
|
||||
result.append(chr((ord(ch) - ord('A') - shift) % 26 + ord('A')))
|
||||
else:
|
||||
result += ch
|
||||
|
||||
return result
|
||||
result.append(ch)
|
||||
return ''.join(result)
|
||||
|
||||
|
||||
def autokey_en(ptext, ak):
|
||||
result = ""
|
||||
result = []
|
||||
ptext = ptext.upper()
|
||||
current_key = ak
|
||||
|
||||
for i in range(len(ptext)):
|
||||
ch = ptext[i]
|
||||
if 32 <= ord(ch) <= 47:
|
||||
result += ch
|
||||
elif 65 <= ord(ch) <= 90:
|
||||
for ch in ptext:
|
||||
if ch.isalpha():
|
||||
shift = (current_key - ord('A')) % 26
|
||||
cipher_char = chr((ord(ch) - ord('A') + shift) % 26 + ord('A'))
|
||||
result += cipher_char
|
||||
result.append(cipher_char)
|
||||
current_key = ord(cipher_char)
|
||||
else:
|
||||
result += ch
|
||||
|
||||
return result
|
||||
result.append(ch)
|
||||
return ''.join(result)
|
||||
|
||||
def autokey_de(ctext, ak):
|
||||
result = ""
|
||||
result = []
|
||||
ctext = ctext.upper()
|
||||
current_key = ak
|
||||
|
||||
for i in range(len(ctext)):
|
||||
ch = ctext[i]
|
||||
if 32 <= ord(ch) <= 47:
|
||||
result += ch
|
||||
elif 65 <= ord(ch) <= 90:
|
||||
for ch in ctext:
|
||||
if ch.isalpha():
|
||||
shift = (current_key - ord('A')) % 26
|
||||
plain_char = chr((ord(ch) - ord('A') - shift + 26) % 26 + ord('A'))
|
||||
result += plain_char
|
||||
plain_char = chr((ord(ch) - ord('A') - shift) % 26 + ord('A'))
|
||||
result.append(plain_char)
|
||||
current_key = ord(plain_char)
|
||||
else:
|
||||
result += ch
|
||||
|
||||
return result
|
||||
result.append(ch)
|
||||
return ''.join(result)
|
||||
|
||||
def operator(argument,ptext,ak,vk):
|
||||
match argument:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue