首页 > 建站教程 > JS、jQ、TS >  js实现恺撒密码正文

js实现恺撒密码

1.jpg


     恺撒密码是古罗马时代经常使用的一种经典加密算法,伴随着恺撒的南征北战而流传于世。恺撒密码的基本原理是将明文字符串中的每一位字母往后(或往前)移N位,N即是对明文进行加密的密钥;移位之后的结果是一串无明显语义信息的字符串,即密文;解密过程是将密文中的每一位字母往前(或往后)移N位。

     最简单的明文是一串英文字母,不区分大小写、无空格和其它标点符号。加密这种明文的第一步是将字母与数字一一对应,例如a对应数字0、b对应数字1、…、z对应数字25;然后,将明文中每一位字母所对应的数字增加(或减少)N后取模,例如,假设 N = 3,对明文中字母b的加密结果是:1 + 3 mod 26 = 4,对字母z的加密结果是:25 + 3 mod 26 = 2。


具体代码如下:

// 加密
function jiami(str, num) {
  var newStr = "";
  for (let i = 0; i < str.length; i++) {
    if (str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 90) {
      newStr += String.fromCharCode((str.charCodeAt(i) - 65 + num + 26) % 26 + 65)
    }
    else if (str.charCodeAt(i) >= 97 && str.charCodeAt(i) <= 122) {
      newStr += String.fromCharCode((str.charCodeAt(i) - 97 + num + 26) % 26 + 97)
    }
    //特殊符号不做处理
    else newStr += String.fromCharCode(str.charCodeAt(i));
  }
  // console.log(newStr);
  return newStr;
}
var result1 = jiami("Peace and Love", 3);
console.log(result1);  // 输入加密后的密文:Shdfh dqg Oryh
// 解密
function jiemi(str, num) {
  var newStr = "";
  for (let i = 0; i < str.length; i++) {
    // str.chatCodeAt(i);
    if (str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 90) {
      newStr += String.fromCharCode((str.charCodeAt(i) - 65 - num + 26) % 26 + 65)
    }
    else if (str.charCodeAt(i) >= 97 && str.charCodeAt(i) <= 122) {
      newStr += String.fromCharCode((str.charCodeAt(i) - 97 - num + 26) % 26 + 97)
    }
    //特殊符号不做处理
    else newStr += String.fromCharCode(str.charCodeAt(i));
  }
  // console.log(newStr);
  return newStr;
}
var result2 = jiemi(jiami("Peace and Love", 3), 3);
console.log(result2);   // 输出解密后的明文:Peace and Love

本文为CSDN博主「Pulseum」的原创文章,原文链接:https://blog.csdn.net/qq_53472371/article/details/123812993