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