TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

<< Back to C-SHARP

C# Caesar Cipher

Implement a Caesar cipher using a static method. A Caesar cipher shifts letters.
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. If the letter overflows, it begins again at the letter "a".
Example. The Caesar method receives a string value and an int that indicates the shift. The string is the input string. In the Caesar method, we convert the string to a char array with ToCharArray.ToCharArray

Shift: 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.

Char

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).

Caesar cipher: Wikipedia
C# program that implements Caesar cipher 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 on overflow. // Add 26 on underflow. 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); } } Output test lwkl test uftu test exxegoexsrgi attackatonce
Numeric characters. What happens with numeric (or non-letter) characters in the cipher? The Wikipedia article 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.

Exception
Summary. The Caesar cipher is a substitution cipher that shifts letter positions. It is similar to the ROT13 cipher. One benefit to this cipher is the shift value can be kept secret to slightly improve security.

Note: This sort of cipher will not prevent any determined hackers from unencrypting your data.

However: You could use the Caesar cipher and then an actual encryption algorithm on top of that.

© TheDeveloperBlog.com
The Dev Codes

Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf