From a1b2495e474ec793f2ee512049b525726a3d5e9c Mon Sep 17 00:00:00 2001 From: Student Date: Tue, 5 Aug 2025 09:59:28 +0530 Subject: [PATCH] added lab2 questions --- IS/Lab/Lab2/3des.py | 31 +++++++++++++++++++++++++++++++ IS/Lab/Lab2/aes_128.py | 34 ++++++++++++++++++++++++++++++++++ IS/Lab/Lab2/aes_192.py | 29 +++++++++++++++++++++++++++++ IS/Lab/Lab2/des.py | 16 +++++----------- IS/Lab/Lab2/des_vs_aes256.py | 0 5 files changed, 99 insertions(+), 11 deletions(-) create mode 100644 IS/Lab/Lab2/3des.py create mode 100644 IS/Lab/Lab2/aes_128.py create mode 100644 IS/Lab/Lab2/aes_192.py create mode 100644 IS/Lab/Lab2/des_vs_aes256.py diff --git a/IS/Lab/Lab2/3des.py b/IS/Lab/Lab2/3des.py new file mode 100644 index 0000000..6fa0a19 --- /dev/null +++ b/IS/Lab/Lab2/3des.py @@ -0,0 +1,31 @@ +from Crypto.Cipher import DES3 +from Crypto.Util.Padding import pad, unpad + +def des3_cipher(key): + return DES3.new(key.encode('utf-8'), DES3.MODE_ECB) + +def des3_en(ptext, key): + cipher = des3_cipher(key) + padded_text = pad(ptext.encode('utf-8'), DES3.block_size) + return cipher.encrypt(padded_text) + +def des3_de(ctext, key): + cipher = des3_cipher(key) + decrypted = unpad(cipher.decrypt(ctext), DES3.block_size) + return decrypted.decode('utf-8') + +def despad_key(key): + key = key.ljust(24)[:24] + return key + +def main(): + print("Welcome to 3DES (Triple DES)") + ptext = input("Enter plaintext: ") + key = input("Enter key (minimum 16 characters for 3DES): ") + key = despad_key(key) + ctext = des3_en(ptext, key) + print("Your ciphertext: ", ctext) + print("Your decrypted plaintext: ", des3_de(ctext, key)) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/IS/Lab/Lab2/aes_128.py b/IS/Lab/Lab2/aes_128.py new file mode 100644 index 0000000..f6e4572 --- /dev/null +++ b/IS/Lab/Lab2/aes_128.py @@ -0,0 +1,34 @@ +from Crypto.Cipher import AES +from Crypto.Util.Padding import pad, unpad + +def aes_cipher(key): + return AES.new(key.encode('utf-8'), AES.MODE_ECB) + +def aes_en(ptext, key): + cipher = aes_cipher(key) + ptext = pad(ptext.encode('utf-8'), AES.block_size) + return cipher.encrypt(ptext) + +def aes_de(ctext, key): + cipher = aes_cipher(key) + decrypted = cipher.decrypt(ctext) + return unpad(decrypted, AES.block_size).decode('utf-8') + +def aespad_key(key): + return key.ljust(16)[:16] + + # 16 for 128 bit, 24 for 192, 32 for 256 + +def main(): + print("Welcome to AES-128") + ptext = input("Enter plaintext: ") + key = input("Enter key: ") + + key = aespad_key(key) + + ctext = aes_en(ptext, key) + print("Your ciphertext: ", ctext) + print("Your decrypted plaintext: ", aes_de(ctext, key)) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/IS/Lab/Lab2/aes_192.py b/IS/Lab/Lab2/aes_192.py new file mode 100644 index 0000000..653b444 --- /dev/null +++ b/IS/Lab/Lab2/aes_192.py @@ -0,0 +1,29 @@ +from Crypto.Cipher import AES +from Crypto.Util.Padding import pad, unpad + +def aes_cipher(key): + return AES.new(key.encode('utf-8'), AES.MODE_ECB) + +def aes_en(ptext, key): + cipher = aes_cipher(key) + ptext = pad(ptext.encode('utf-8'), AES.block_size) + return cipher.encrypt(ptext) + +def aes_de(ctext, key): + cipher = aes_cipher(key) + decrypted = cipher.decrypt(ctext) + return unpad(decrypted, AES.block_size).decode('utf-8') + +def aespad_key(key): + return key.ljust(24)[:24] + +def main(): + ptext = input("Enter plaintext: ") + key = input("Enter key: ") + key = aespad_key(key) + ctext = aes_en(ptext, key) + print("Ciphertext:", ctext.hex()) + print("Decrypted:", aes_de(ctext, key)) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/IS/Lab/Lab2/des.py b/IS/Lab/Lab2/des.py index cf0f108..91ecc85 100644 --- a/IS/Lab/Lab2/des.py +++ b/IS/Lab/Lab2/des.py @@ -1,23 +1,18 @@ from Crypto.Cipher import DES +from Crypto.Util.Padding import pad, unpad def des_cipher(key): return DES.new(key.encode('utf-8'), DES.MODE_ECB) -def despad_ptext(text): - n = len(text) % 8 - if n != 0: - return text + (' ' * (8 - n)) - else: - return text - def des_en(ptext, key): cipher = des_cipher(key) - ptext = despad_ptext(ptext).encode('utf-8') - return cipher.encrypt(ptext) + padded_text = pad(ptext.encode('utf-8'), DES.block_size) + return cipher.encrypt(padded_text) def des_de(ctext, key): cipher = des_cipher(key) - return cipher.decrypt(ctext).decode('utf-8').rstrip() + decrypted = unpad(cipher.decrypt(ctext), DES.block_size) + return decrypted.decode('utf-8') def despad_key(key): return key.ljust(8)[:8] @@ -25,7 +20,6 @@ def despad_key(key): def main(): print("Welcome to DES (Original)") ptext = input("Enter plaintext: ") - despad_ptext(ptext) key = input("Enter key: ") key = despad_key(key) ctext = des_en(ptext, key) diff --git a/IS/Lab/Lab2/des_vs_aes256.py b/IS/Lab/Lab2/des_vs_aes256.py new file mode 100644 index 0000000..e69de29