在JavaScript中实现凯撒密码

JavaScriptJavaScriptBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将探索凯撒密码(Caesar cipher),这是一种简单的加密算法,它将给定字符串中的每个字母按字母表顺序向下移动一定数量的位置。我们将使用字符串操作和数组方法的组合在JavaScript中实现凯撒密码,并学习如何使用此技术对消息进行加密和解密。本实验是一个绝佳的机会,可让你练习JavaScript技能并更好地理解加密算法。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("`JavaScript`")) -.-> javascript/BasicConceptsGroup(["`Basic Concepts`"]) javascript(("`JavaScript`")) -.-> javascript/AdvancedConceptsGroup(["`Advanced Concepts`"]) javascript/BasicConceptsGroup -.-> javascript/variables("`Variables`") javascript/BasicConceptsGroup -.-> javascript/data_types("`Data Types`") javascript/BasicConceptsGroup -.-> javascript/arith_ops("`Arithmetic Operators`") javascript/BasicConceptsGroup -.-> javascript/comp_ops("`Comparison Operators`") javascript/BasicConceptsGroup -.-> javascript/cond_stmts("`Conditional Statements`") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("`Higher-Order Functions`") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("`Spread and Rest Operators`") subgraph Lab Skills javascript/variables -.-> lab-28183{{"`在JavaScript中实现凯撒密码`"}} javascript/data_types -.-> lab-28183{{"`在JavaScript中实现凯撒密码`"}} javascript/arith_ops -.-> lab-28183{{"`在JavaScript中实现凯撒密码`"}} javascript/comp_ops -.-> lab-28183{{"`在JavaScript中实现凯撒密码`"}} javascript/cond_stmts -.-> lab-28183{{"`在JavaScript中实现凯撒密码`"}} javascript/higher_funcs -.-> lab-28183{{"`在JavaScript中实现凯撒密码`"}} javascript/spread_rest -.-> lab-28183{{"`在JavaScript中实现凯撒密码`"}} end

凯撒密码

要使用凯撒密码,请遵循以下步骤:

  1. 打开终端/SSH并输入node以开始练习编码。
  2. 使用要加密或解密的字符串、偏移值以及一个指示是否解密的布尔值调用caesarCipher函数。
  3. caesarCipher函数使用取模(%)运算符和三元运算符(?)来计算正确的加密或解密密钥。
  4. 它使用展开运算符(...)和Array.prototype.map()来遍历给定字符串的字母。
  5. 它使用String.prototype.charCodeAt()String.fromCharCode()来适当地转换每个字母,忽略特殊字符、空格等。
  6. 它使用Array.prototype.join()将所有字母组合成一个字符串。
  7. 如果你想解密一个加密的字符串,在调用caesarCipher函数时,将true传递给最后一个参数decrypt

以下是caesarCipher函数的代码:

const caesarCipher = (str, shift, decrypt = false) => {
  const s = decrypt ? (26 - shift) % 26 : shift;
  const n = s > 0 ? s : 26 + (s % 26);
  return [...str]
    .map((l, i) => {
      const c = str.charCodeAt(i);
      if (c >= 65 && c <= 90)
        return String.fromCharCode(((c - 65 + n) % 26) + 65);
      if (c >= 97 && c <= 122)
        return String.fromCharCode(((c - 97 + n) % 26) + 97);
      return l;
    })
    .join("");
};

以下是一些使用caesarCipher函数的示例:

caesarCipher("Hello World!", -3); // 'Ebiil Tloia!'
caesarCipher("Ebiil Tloia!", 23, true); // 'Hello World!'

总结

恭喜你!你已经完成了凯撒密码实验。你可以在LabEx中练习更多实验来提升你的技能。

您可能感兴趣的其他 JavaScript 教程