加密字符串 JavaScript

javascriptweb developmentfront end technology

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

理解问题陈述

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

什么是凯撒密码算法?

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

因此,简单地说,我们可以说凯撒密码是一种替换密码,其中明文中的每个字母都按照特定规则被另一个字母替换。但这是一种非常简单的加密,可以借助蛮力算法轻松破解,攻击者会尝试检查密文中字母的所有可能的键值以了解原始消息。

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

给定问题的逻辑

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

算法

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

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

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

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

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

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

算法代码

// 用于加密输入消息的函数
function encryptMsg(str, shift) {
   let encreptedStr = ' ';
    
   for (let i = 0; i < str.length; i++) {
        let charCode = str.charCodeAt(i);
        
        if (charCode >= 65 && charCode <= 90) {
            // 大写字母
            encreptedStr += String.fromCharCode((charCode - 65 + shift) % 26 + 65);
        } else if (charCode >= 97 && charCode <= 122) {
            // 小写字母
            encreptedStr += String.fromCharCode((charCode - 97 + shift) % 26 + 97);
        } else {
            // 非字母字符
            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 来解决给定的问题。


相关文章