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