encrypption in C# console using mod of 26
namespace CaesarCipher
{
class Program
{
static void Main(string[] args)
{
// Determining if user wants to encrypt or decrypt.
Console.WriteLine("Chose One: Encrypt / Decrypt");
string encryptDecrypt = Console.ReadLine();
string lowerEncryptDecrypt = encryptDecrypt.ToLower();
if (lowerEncryptDecrypt == "encrypt")
{
// Taking user input to encrypt and converting to lower.
Console.WriteLine("Enter a message to encrypt.");
string unencryptedMessage = Console.ReadLine();
string lowerUnencryptedMessage = unencryptedMessage.ToLower();
// Taking user input for cipher value and parsing as int.
Console.WriteLine("Enter a value for the cipher.");
int cipherValue = Int16.Parse(Console.ReadLine());
// Converting user input to array.
char[] secretMessage = lowerUnencryptedMessage.ToCharArray();
// Calling Encrypt() with user input and printing result to console.
Console.WriteLine(Encrypt(secretMessage, cipherValue));
} else if (lowerEncryptDecrypt == "decrypt")
{
// Taking user input to encrypt and converting to lower.
Console.WriteLine("Enter a message to decrypt.");
string msgToDecrypt = Console.ReadLine();
string lowerMsgToDecrypt = msgToDecrypt.ToLower();
// Taking user input for cipher value and parsing as int.
Console.WriteLine("Enter a value for the cipher.");
int cipherValue = Int16.Parse(Console.ReadLine());
// Converting user input to array.
char[] secretMessage = lowerMsgToDecrypt.ToCharArray();
// Calling Decrypt() with user input and printing result to console.
Console.WriteLine(Decrypt(secretMessage, cipherValue));
} else
{
Console.WriteLine("That is not a valid choice. Please restart.");
}
}
// Creating encryption method.
static string Encrypt(char[] secretMessage, int cipherValue)
{
// Array to reference letter position.
char[] alphabet = new char[] {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
// Empty array to hold encrypted message.
char[] encryptedMessage = new char[secretMessage.Length];
// Loop to encrypt each letter (skipping symbols) and add to previously empty array.
for (int i = 0; i < secretMessage.Length; i++)
{
char unencryptedLetter = secretMessage[i];
if (Char.IsLetter(unencryptedLetter) == true)
{
int unencryptedAlphabetPosition = Array.IndexOf(alphabet, unencryptedLetter);
int encryptedAlphabetPosition = (unencryptedAlphabetPosition + cipherValue) % 26;
char encryptedLetter = alphabet[encryptedAlphabetPosition];
encryptedMessage[i] = encryptedLetter;
} else {
encryptedMessage[i] = unencryptedLetter;
}
}
// Converting encrypted message array into string and returning outside method.
string encryptedMessageResult = string.Join("", encryptedMessage);
return encryptedMessageResult;
}
// Creating decryption method.
static string Decrypt(char[] secretMessage, int cipherValue)
{
// Array to reference letter position.
char[] alphabet = new char[] {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
// Empty array to hold decrypted message.
char[] encryptedMessage = new char[secretMessage.Length];
// Loop to decrypt each letter (skipping symbols) and add to previously empty array.
for (int i = 0; i < secretMessage.Length; i++)
{
char unencryptedLetter = secretMessage[i];
if (Char.IsLetter(unencryptedLetter) == true)
{
int unencryptedAlphabetPosition = Array.IndexOf(alphabet, unencryptedLetter);
int encryptedAlphabetPosition = (unencryptedAlphabetPosition + (26 - (cipherValue % 26))) % 26;
char encryptedLetter = alphabet[encryptedAlphabetPosition];
encryptedMessage[i] = encryptedLetter;
} else {
encryptedMessage[i] = unencryptedLetter;
}
}
// Converting decrypted message array into string and returning outside method.
string encryptedMessageResult = string.Join("", encryptedMessage);
return encryptedMessageResult;
}
}
}