JavaScript のシーザー暗号
この記事では、JavaScript ソースコードで CaesarCipher を学習して使用します。Caesar Cipher は、プログラミングで文字列を暗号化および復号化する手法です。
シーザーサイファー
これは、データを暗号化するための最も簡単で高度な手法の 1つです。提供された文字列テキストでは、各文字を文字に置き換えて変更します。文字は、アルファベットの下向きまたは上向きの固定番号です。
たとえば、上向きの固定数 3 を定義すると、文字列の"A"
は"D"
に置き換えられ、"B"
は"E"
に置き換えられます。
文字をシフトするために上向きの固定数 3 を定義したとしましょう。以下に示すように、暗号化によって結果が得られます。
original string = "hello world"
result string = "khoor zruog"
シーザー暗号のアルゴリズム
暗号化する必要のある文字列はテキストと呼ばれます。まず、アルファベットの合計が 26 であることがわかっているため、修正番号を 0 から 25 の間に定義する必要があります。次に、一度に 1 文字ずつ提供されたテキストをトラバースする必要があります。
インデックスごとに、すでに決定した下向きの増分または上向きの増分のルールに従って、各文字を変換します。最後に、結果の文字列を生成する必要があります。
JavaScript のシーザー暗号
JavaScript では、開発者は主に組み込みまたはカスタム作成の暗号化技術を使用して、サーバーとの対話中にデータを保護していました。JavaScript Web アプリケーションでは、ほとんどの場合、データをデータベースにアップロードする前にデータを暗号化する必要があります。
CaesarCipher テクニックで文字列を暗号化するのに役立つ 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 の特殊文字を回避する新しい文字列を回避および生成しました。