用JS实现凯撒密码的加密和解密操作,要求:输入任意的key和明文
时间: 2024-10-09 16:11:55 浏览: 17
在JavaScript中,我们可以很容易地实现凯撒密码(Caesar Cipher),这是一种简单的替换式加密技术,通过将字母表中的每个字符向右移动固定数量的位置来进行加密和解密。以下是基本的实现:
```javascript
function caesarCipherEncrypt(text, key) {
let encryptedText = '';
for (let i = 0; i < text.length; i++) {
const charCode = text.charCodeAt(i);
// 确保处理大写字母、小写字母以及非字母字符
if ((charCode >= 'a'.charCodeAt(0) && charCode <= 'z'.charCodeAt(0)) ||
(charCode >= 'A'.charCodeAt(0) && charCode <= 'Z'.charCodeAt(0))) {
const shift = key % 26;
let newCharCode = (charCode + shift - 'a'.charCodeAt(0));
if (charCode === 'z'.charCodeAt(0) || charCode === 'Z'.charCodeAt(0)) {
newCharCode = (charCode === 'z'.charCodeAt(0) ? 0 : 'Z'.charCodeAt(0)) + (shift - 26);
}
encryptedText += String.fromCharCode(newCharCode);
} else {
encryptedText += text.charAt(i); // 非字母字符保持不变
}
}
return encryptedText;
}
function caesarCipherDecrypt(encryptedText, key) {
return caesarCipherEncrypt(encryptedText, -key); // 解密只需将加密时的key取负值
}
// 使用示例
const plainText = 'Hello, World!';
const key = 3;
const encrypted = caesarCipherEncrypt(plainText, key);
console.log('Encrypted:', encrypted);
const decrypted = caesarCipherDecrypt(encrypted, key);
console.log('Decrypted:', decrypted);
```
在这个例子中,`caesarCipherEncrypt`函数用于加密,接受明文和密钥作为参数;而`caesarCipherDecrypt`则是解密函数,它的工作原理是将加密过程中的密钥取相反数。