JavaScript 中的凱撒密碼
Muhammad Muzammil Hussain
2023年10月12日
在本文中,我們將在 JavaScript 原始碼中學習和使用 Caesar Cipher。凱撒密碼是一種在程式設計中加密和解密字串的技術。
凱撒密碼
它是加密資料的最簡單和最先進的技術之一。在提供的字串文字中,我們用字母替換和更改每個字母,這是字母表中向下或向上的固定數字。
例如,如果我們定義向上的固定數 3,字串中的 "A"
將被替換為 "D"
,"B"
將被替換為"E"
,以此類推。
假設我們定義了向上固定數字 3 來移動一個字母;我們的加密將提供一個結果,如下所示。
original string = "hello world"
result string = "khoor zruog"
凱撒密碼演算法
需要加密的字串稱為文字;首先,我們需要定義 0 到 25 之間的固定數字,因為我們知道字母總數為 26;然後,我們需要遍歷一次提供一個字元的文字。
對於每個索引,按照我們已經確定的向下遞增或向上遞增的規則轉換每個字元。最後,我們需要生成結果字串。
JavaScript 中的凱撒密碼
在 JavaScript 中,開發人員大多使用內建或自定義建立的加密技術來保護與伺服器互動期間的資料。在 JavaScript Web 應用程式中,我們大部分時間都需要在將資料上傳到資料庫之前對其進行加密。
我們將在下面建立一個 JavaScript 函式示例,該示例將幫助我們使用凱撒密碼技術加密我們的字串。
例子:
const org = 'hello world';
const createMAp = (alphabets, shift) => {
return alphabets.reduce((charsMap, currentChar, charIndex) => {
const copy = {...charsMap};
let ind = (charIndex + shift) % alphabets.length;
if (ind < 0) {
ind += alphabets.length;
};
copy[currentChar] = alphabets[ind];
return copy;
}, {});
};
const encrypt = (org, shift = 0) => {
const alphabets = 'abcdefghijklmnopqrstuvwxyz'.split('');
const map = createMAp(alphabets, shift);
return org.toLowerCase().split('').map(char => map[char] || char).join('');
};
console.log('original string : ' + org)
console.log('result string :' + encrypt(org, 3))
輸出:
"original string : hello world"
"result string :khoor zruog"
在上面的 JavaScript 原始碼中,我們建立了 encrypt
函式,其中我們將字串值和固定數字作為引數傳遞。我們已經使用 createMap()
函式定義了所有字母並生成了地圖物件。
在 createMap()
函式中,我們使用 reduce
方法來生成物件。我們使用了 toLowerCase()
和 split()
方法來避免和生成新字串,避免具有固定數字 3 的特殊字元。