JavaScript 加密字符串

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来解决给定的问题。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程