Caesar Cipher
This page was last reviewed on Sep 15, 2022.
Dot Net Perls
Caesar cipher. A Caesar cipher shifts letters in a string. In this cipher, each letter is shifted a certain number of places in the alphabet.
Cipher notes. In this cipher, if the letter overflows after shifting, it begins again at the letter "a". This cipher is similar to ROT13.
Example. The Caesar method receives a string value and an int that indicates the shift. In the method, we convert the string to a char array with ToCharArray.
String ToCharArray
Detail If the character goes above "z", we shift it back 26 places. If the character goes below "a", we shift it forward 26 places.
So We apply the shift value to every character—this is correct for all lowercase letters.
Info We can see that this cipher is reversible. A call to Caesar(string, 18) can be reversed with a call to Caesar(string, -18).
Also The example from Wikipedia can be solved with a call to Caesar(string, -4).
using System; class Program { /// <summary> /// Apply Caesar cipher with shift. /// </summary> static string Caesar(string value, int shift) { char[] buffer = value.ToCharArray(); for (int i = 0; i < buffer.Length; i++) { // Letter. char letter = buffer[i]; // Add shift to all. letter = (char)(letter + shift); // Subtract 26 if past z. // ... Add 26 if below a. if (letter > 'z') { letter = (char)(letter - 26); } else if (letter < 'a') { letter = (char)(letter + 26); } // Store. buffer[i] = letter; } return new string(buffer); } static void Main() { string a = "test"; string b = Caesar(a, 18); // Ok string c = Caesar(b, -18); // Ok string d = Caesar(a, 1); // Ok string e = Caesar(d, -1); // Ok string f = "exxegoexsrgi"; string g = Caesar(f, -4); // Ok Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c); Console.WriteLine(d); Console.WriteLine(e); Console.WriteLine(f); Console.WriteLine(g); } }
test lwkl test uftu test exxegoexsrgi attackatonce
Numeric characters. What happens with non-letter characters in the cipher? The cipher does not specify how numbers should be treated. It would be simple to ignore them.
Also Another option would be to throw an exception if a number is found. Callers of Caesar would have to be prepared for this.
Summary. The Caesar cipher is a substitution cipher that shifts letter positions. It is similar to ROT13. The shift value can be kept secret to make the cipher harder to break.
A final note. This sort of cipher will not provide any real security. You could use the Caesar cipher and then an actual encryption algorithm on top of that.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on Sep 15, 2022 (grammar).
© 2007-2024 Sam Allen.