Encrypt plaintext by shifting letters by a user-defined number. Decrypt ciphertext back to the original text using the same shift. Input validation to ensure the shift is a valid integer.
The app takes a string and a numeric key, then shifts each character's Unicode value while maintaining the alphabet boundaries using the modulo operator.