# Print the name of the program
print(" ""-----"" VLAD'S CYPHER ENCRYPTION/DECRYPTION PROGRAM
""-----")
# Make a pause between the name of the program and the rest of the code
print("")
# Define the function to encrypt text using Caesar Cipher
def encrypt(text, shift):
# Define the alphabet for reference
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
# Initialize an empty string to store the encrypted text
encrypted_text = ""
# Iterate through each character in the input text
for char in text:
# Check if the character is alphabetic
if char.isalpha():
# Determine if the original character is uppercase
is_upper = char.isupper()
# Find the position of the character in the alphabet
position = alphabet.find(char.upper())
# Calculate the new position after shifting
new_position = (position + shift) % 26
# Append the encrypted character to the result
encrypted_text += alphabet[new_position].upper() if is_upper else
alphabet[new_position].lower()
else:
# If the character is not alphabetic, keep it unchanged
encrypted_text += char
# Return the encrypted text
return encrypted_text
# Define the function to decrypt text using Caesar Cipher
def decrypt(text, shift):
# Define the alphabet for reference
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
# Initialize an empty string to store the decrypted text
decrypted_text = ""
# Iterate through each character in the input text
for char in text:
# Check if the character is alphabetic
if char.isalpha():
# Determine if the original character is uppercase
is_upper = char.isupper()
# Find the position of the character in the alphabet
position = alphabet.find(char.upper())
# Calculate the new position after shifting in reverse
new_position = (position - shift) % 26
# Append the decrypted character to the result
decrypted_text += alphabet[new_position].upper() if is_upper else
alphabet[new_position].lower()
else:
# If the character is not alphabetic, keep it unchanged
decrypted_text += char
# Return the decrypted text
return decrypted_text
# Define the function to get a valid shift value from the user
def get_valid_shift():
# Loop until a valid input is provided
while True:
try:
# Try to get a valid integer input from the user
shift = int(input("Please enter a whole number from 1-25 to be your
key: "))
# Check if the entered shift is within the valid range
if 1 <= shift <= 25:
print(f"Shift value {shift} is valid.")
return shift
else:
print("Shift value must be between 1 and 25.")
except ValueError:
# Handle the case where the user enters a non-integer
print("Invalid input. Please enter a valid whole number.")
# Define the main program
def main():
# Define file paths for input and output
input_file_path = "C:\\Users\\30174846\\OneDrive - New College Lanarkshire\\
LVL6 IT&CYBER SECURITY\\SEMESTER 2\\Computer Programming NQ Level 6\\Assessment 2 —
Practical assignment\\ciphers\\CipherInput.txt"
encrypted_output_path = "C:\\Users\\30174846\\OneDrive - New College
Lanarkshire\\LVL6 IT&CYBER SECURITY\\SEMESTER 2\\Computer Programming NQ Level 6\\
Assessment 2 — Practical assignment\\ciphers\\CipherEncrypt.txt"
decrypted_output_path = "C:\\Users\\30174846\\OneDrive - New College
Lanarkshire\\LVL6 IT&CYBER SECURITY\\SEMESTER 2\\Computer Programming NQ Level 6\\
Assessment 2 — Practical assignment\\ciphers\\CipherDecrypt.txt"
try:
# Try to open and read the input file
with open(input_file_path, 'r') as file:
# Read the content of the file
original_text = file.read()
except FileNotFoundError:
# Handle the case where the input file is not found
print(f"Error: Input file not found at CipherInput.txt")
return
# Get a valid shift value from the user
shift_amount = get_valid_shift()
# Main loop for user interaction
while True:
# Print the available options
print("\nOptions:")
print("1. Encrypt and save to file")
print("2. Decrypt and save to file")
print("3. Change shift value")
print("4. Exit")
# Get user choice
option = input("Enter your choice (1, 2, 3, or 4): ")
if option == '1':
# Encrypt and save to file
encrypted_result = encrypt(original_text, shift_amount)
try:
with open(encrypted_output_path, 'w') as encrypted_file:
# Write original and encrypted text to the file
encrypted_file.write(f"Original Text:\n{original_text}\n\n")
encrypted_file.write(f"Encrypted Text (Shift={shift_amount}):\
n{encrypted_result}")
print(f"Encrypted result saved to CipherEncrypt.txt")
# Prompt for decryption or exit
decrypt_option = input("Options:\n1. Decrypt\n2. Change shift
value\n3. Exit\nEnter your choice (1,2, or 3): ")
if decrypt_option == '1':
# Decrypt the encrypted result
decrypted_result = decrypt(encrypted_result, shift_amount)
try:
with open(decrypted_output_path, 'w') as decrypted_file:
# Write decrypted text to the file
decrypted_file.write(f"Decrypted Text
(Shift={shift_amount}):\n{decrypted_result}")
print(f"Decrypted result saved to CipherDecrypt.txt")
# Exit the program
break
except IOError:
print(f"Error: Unable to write to decrypted output file at
CipherDecrypt.txt")
break
elif decrypt_option == '2':
# Change shift value
shift_amount = get_valid_shift()
elif decrypt_option == '3':
# Exit the program
break
else:
print("Invalid choice. Exiting program.")
# Exit the program
break
except IOError:
print(f"Error: Unable to write to encrypted output file at
CipherEncrypt.txt")
elif option == '2':
# Encrypt, then decrypt and save to file
encrypted_result = encrypt(original_text, shift_amount)
try:
with open(encrypted_output_path, 'w') as encrypted_file:
# Write original and encrypted text to the file
encrypted_file.write(f"Original Text:\n{original_text}\n\n")
encrypted_file.write(f"Encrypted Text (Shift={shift_amount}):\
n{encrypted_result}")
print(f"Encrypted result saved to CipherEncrypt.txt")
# Decrypt the encrypted result
decrypted_result = decrypt(encrypted_result, shift_amount)
try:
with open(decrypted_output_path, 'w') as decrypted_file:
# Write decrypted text to the file
decrypted_file.write(f"Decrypted Text
(Shift={shift_amount}):\n{decrypted_result}")
print(f"Decrypted result saved to CipherDecrypt.txt")
except IOError:
print(f"Error: Unable to write to decrypted output file at
CipherDecrypt.txt")
except IOError:
print(f"Error: Unable to write to encrypted output file at
CipherEncrypt.txt")
# Prompt for change shift value or exit
break
elif option == '3':
# Change shift value
shift_amount = get_valid_shift()
elif option == '4':
# Exit the program
break
else:
print("Invalid choice. Please enter a valid option (1, 2, 3, or 4).")
# Check if the script is run as the main program
if __name__ == "__main__":
# Call the main function
main()