加密字符串 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,小写字母的字符代码或 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 来解决给定的问题。