Added Lab2/Lab3 IS

This commit is contained in:
sherlock 2025-08-12 09:43:39 +05:30
parent 011d5aded1
commit 0755dd4b76
6 changed files with 109 additions and 140 deletions

View file

@ -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: