Adding the Caesar's Cipher algorithm

This commit is contained in:
Ed Mendoza
2017-10-15 17:07:44 -04:00
parent daa37ba33f
commit 2fd39c88ff

43
Ciphers/caesarsCipher.js Normal file
View File

@ -0,0 +1,43 @@
/**
* Caesar's Cipher - also known as the ROT13 Cipher is when
* a letter is replaced by the one that is 13 spaces away
* from it in the alphabet. If the letter is in the first half
* of the alphabet we add 13, if it's in the latter half we
* subtract 13 from the character code value.
*/
/**
* Decrypt a ROT13 cipher
* @param {String} str - string to be decrypted
* @return {String} decrypted string
*/
function rot13(str) {
let response = [];
let strLength = str.length;
for (let i =0; i < strLength; i++) {
const char = str.charCodeAt(i);
switch(true) {
// Check for non-letter characters
case char < 65 || (char > 90 && char < 97) || char > 122:
response.push(str.charAt(i));
break;
// Letters from the second half of the alphabet
case (char > 77 && char <= 90 ) || (char > 109 && char <= 122):
response.push(String.fromCharCode(str.charCodeAt(i) - 13));
break;
// Letters from the first half of the alphabet
default:
response.push(String.fromCharCode(str.charCodeAt(i) + 13));
}
}
return response.join('');
}
// Caesars Cipher Example
const encryptedString = 'Uryyb Jbeyq';
const decryptedString = rot13(encryptedString);
console.log(decryptedString); // Hello World