mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-07 02:05:08 +08:00
Adding the Caesar's Cipher algorithm
This commit is contained in:
43
Ciphers/caesarsCipher.js
Normal file
43
Ciphers/caesarsCipher.js
Normal 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
|
Reference in New Issue
Block a user