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 來解決給定的問題。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP