OneCompiler

DES ENCRYPTION & DECRYPTION - PE

105

def pad_text(text, block_size=8):
while len(text) % block_size != 0:
text += ' '
return text

def xor_encrypt_decrypt(data, key):
return ''.join(chr(ord(c) ^ ord(key[i % len(key)])) for i, c in enumerate(data))

#User input
key = input("Enter 8-byte key: ")
if len(key) != 8:
print("Key must be exactly 8 characters!")
else:
plaintext = input("Enter plaintext: ")
padded_plaintext = pad_text(plaintext)

#Encrypt
ciphertext = xor_encrypt_decrypt(padded_plaintext, key)
encrypted_hex = ciphertext.encode().hex()
print("Encrypted (hex):", encrypted_hex)

#Decrypt
decrypted = xor_encrypt_decrypt(ciphertext, key).rstrip()
print("Decrypted:", decrypted)