TheDeveloperBlog.com

Home | Contact Us

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

<< Back to SWIFT

Swift Caesar Cipher

Implement the Caesar cipher. Use utf8 and UnicodeScalar to shift character values.
Caesar cipher. In a Caesar cipher, all letters are shifted by a certain number of places. Then the characters are wrapped to fit within the alphabetical range.
In Swift, we can loop over integer values in a string with utf8. And with UnicodeScalar we can shift those characters into the desired range.
Example implementation. This code introduces the caesar() method. It accepts a String and a "shift" Int. And it returns a String.

Array: We create an empty Character array. This is where we append() our shifted chars as we compute them.

If, else: We use an if-statement to test whether the value exceeds a lowercase "z." If so we shift it backwards.

If

UnicodeScalar: We use this type to convert an integer value (based on an arithmetic expression) back into a Character.

Convert Int to Character

String: We return a new string based on the characters we added in the Character array. This is the result of caesar().

Swift program that implements Caesar cipher func caesar(value: String, shift: Int) -> String { // Empty character array. var result = [Character]() // Loop over utf8 values. for u in value.utf8 { // Apply shift to UInt8. let s = Int(u) + shift // See if value exceeds Z. // ... The Z is 26 past "A" which is 97. // ... If greater than "Z," shift backwards 26. // ... If less than "A," shift forward 26. if s > 97 + 25 { result.append(Character(UnicodeScalar(s - 26))) } else if s < 97 { result.append(Character(UnicodeScalar(s + 26))) } else { result.append(Character(UnicodeScalar(s))) } } // Return String from array. return String(result) } // Test Caesar cipher on this string. let value1 = "test" print(value1) let value2 = caesar(value1, shift: 18) let value3 = caesar(value2, shift: -18) print("\(value2) \(value3)") let value4 = caesar(value1, shift: 1) let value5 = caesar(value4, shift: -1) print("\(value4) \(value5)") let value6 = "exxegoexsrgi" let value7 = caesar(value6, shift: -4) print("\(value6) \(value7)") Output test lwkl test uftu test exxegoexsrgi attackatonce
Some notes. A Caesar cipher is a more general form of the ROT13 algorithm. In it we rotate characters any number of places, not just 13 places as in ROT13. These ciphers have limited use.
A review. The Caesar cipher is not a good form of encryption. It only obfuscates text. But it can help us learn how to manipulate characters with their underlying integral values.Characters
© 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