diff --git a/Ciphers/XORCipher.js b/Ciphers/XORCipher.js new file mode 100644 index 000000000..898b200dd --- /dev/null +++ b/Ciphers/XORCipher.js @@ -0,0 +1,26 @@ +/** + * The XOR cipher is a type of additive cipher. + * Each character is bitwise XORed with the key. + * We loop through the input string, XORing each + * character with the key. + */ + +/** + * Encrypt using an XOR cipher + * @param {String} str - String to be encrypted + * @param {Number} key - key for encryption + * @return {String} encrypted string + */ + +function XOR (str, key) { + let result = '' + for (const elem of str) { + result += String.fromCharCode(elem.charCodeAt(0) ^ key) + } + return result +} + +const encryptedString = XOR('test string', 32) +console.log('Encrypted: ', encryptedString) +const decryptedString = XOR(encryptedString, 32) +console.log('Decrypted: ', decryptedString)