So I was kind of bored over this weekend, and I decided that it would be a good exercise to write a Caesar Cipher. Here is my code:
class CaesarCipher
{
    private string Sentence;
    private int EncryptShift;
    private int DecryptShift;
    private bool IsEncrypted = false;
    public CaesarCipher(string input, int shifting)
    {
        Sentence = input.ToLower();
        EncryptShift = shifting;
        DecryptShift = -shifting;
    }
    public string Encrypt()
    {
        if (IsEncrypted)
            return Sentence;
        char[] char_array = Sentence.ToCharArray();
        Shuffle(char_array, EncryptShift);
        Recunstruct(char_array);
        return Sentence;
    }
    public string Decrypt()
    {
        if (!IsEncrypted)
            return Sentence;
        char[] char_array = Sentence.ToCharArray();
        Shuffle(char_array, DecryptShift);
        Recunstruct(char_array);
        return Sentence;
    }
    private void Shuffle(char[] char_array, int shift)
    {
        for (int index = 0; index < char_array.Length; index++)
        {
            char letter = char_array[index];
            if (letter >= 'a' && letter <= 'z')
            {
                letter = (char)(letter + shift);
                if (letter > 'z')
                    letter = (char)(letter - 26);
                else if (letter < 'a')
                    letter = (char)(letter + 26);
            }
            char_array[index] = letter;
        }
    }
    private void Recunstruct(char[] char_array)
    {
        Sentence = null;
        foreach (char letter in char_array)
            Sentence += letter;
        IsEncrypted = true;
    }
}
That's all for now, thanks for reading!
 
No comments:
Post a Comment