JavaScript 字符串加密


在这个问题陈述中,我们的任务是借助 Javascript 功能将输入的明文加密为密文。Javascript 中有几种方法可以用来加密消息。一种简单的字符串加密方法是凯撒密码。

理解问题陈述

问题陈述是编写一个 Javascript 函数,该函数可以帮助将给定的输入字符串加密为不可读的格式。例如,如果我们有一个字符串“hello world”,则通过将每个字符移位两个位置,该字符串的加密版本为“khoor zruog”。

什么是凯撒密码算法?

凯撒密码技术基本上用于加密消息。它是通过移动字母在明文中的位置将其转换为密文的方法。例如,如果移位数字为 3,“A”将被加密为“D”,“B”将变为“E”,依此类推。相同的移位数字将应用于消息中存在的所有字母。

所以简单来说,我们可以说凯撒密码是一种替换密码,其中明文中的每个字母都根据特定规则替换为另一个字母。但这是一种非常简单的加密方法,可以使用暴力算法轻松破解,攻击者试图检查密文中所有可能的字母键值以了解原始消息。

该技术有这个缺点,但这种方法仍然在某些情况下使用,在这些情况下,安全性不是一个大问题。

给定问题的逻辑

对于代码,我们将创建一个函数来执行加密。在这个函数中,我们将传递两个参数:第一个是要加密的字符串,第二个是我们想要移动字符串中每个字符的位置数。然后,我们将循环遍历字符串中的所有字符,并检查字符是大写还是小写,以便根据情况应用移位。现在,我们将根据给定的密钥移动每个字符,并将加密的消息显示为输出。

算法

步骤 1 - 声明一个名为 encryptMsg 的函数,该函数使用两个参数 str 和 shift。

步骤 2 - 定义一个空字符串变量来存储加密的消息。

步骤 3 - 循环遍历字符串中的每个字符,并检查字符是大写、小写还是其他格式。

步骤 4 - 之后,我们将获取每个字符的字符代码并将其存储在 charCode 变量中。

步骤 5 - 我们知道,大写字母的字符代码或 ASCII 代码是从 65 到 90,小写字符是从 97 到 122。因此,根据给定的数字检查这些字符,并应用移位以将字符转换为密文。

步骤 6 - 以加密格式返回结果。

算法代码

// function for encryption the input message
function encryptMsg(str, shift) {
   let encreptedStr = ' ';
    
   for (let i = 0; i < str.length; i++) {
      let charCode = str.charCodeAt(i);
       
      if (charCode >= 65 && charCode <= 90) {
         // uppercase letters
         encreptedStr += String.fromCharCode((charCode - 65 + shift) % 26 + 65);
      } else if (charCode >= 97 && charCode <= 122) {
         // lowercase letters
         encreptedStr += String.fromCharCode((charCode - 97 + shift) % 26 + 97);
      } else {
         // non-alphabetic characters
         encreptedStr += str.charAt(i);
      }
   }
   return encreptedStr;
}
const plaintext = 'Hello Tutorials Point';
const shift = 5;
const ciphertext = encryptMsg(plaintext, shift);
console.log("The plain text has been converted in cipher text ---->", ciphertext);

复杂度

函数花费的时间为 O(n),因为该方法使用循环迭代给定消息中的每个字符。而 n 是给定字符串的大小。代码使用的空间也是 O(n),因为它只存储字符串的加密版本作为结果。

结论

因此,上面创建的函数可用于以 O(n) 的时间复杂度加密消息。我们基本上使用了 ASCII 代码和移位数字将给定的消息转换为密文。还使用了 Javascript 的内置方法 fromCharCode 来解决给定的问题。

更新于:2023年5月18日

4K+ 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告