はじめに
この実験では、シーザー暗号と呼ばれる単純な暗号化アルゴリズムを調べます。このアルゴリズムは、与えられた文字列の各文字をアルファベット順に特定の数だけシフトさせます。JavaScriptを使ってシーザー暗号を実装し、文字列操作と配列メソッドを組み合わせて、この手法を使ってメッセージを暗号化および復号化する方法を学びます。この実験は、JavaScriptのスキルを練習し、暗号化アルゴリズムをより深く理解する良い機会です。
This tutorial is from open-source community. Access the source code
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、シーザー暗号と呼ばれる単純な暗号化アルゴリズムを調べます。このアルゴリズムは、与えられた文字列の各文字をアルファベット順に特定の数だけシフトさせます。JavaScriptを使ってシーザー暗号を実装し、文字列操作と配列メソッドを組み合わせて、この手法を使ってメッセージを暗号化および復号化する方法を学びます。この実験は、JavaScriptのスキルを練習し、暗号化アルゴリズムをより深く理解する良い機会です。
シーザー暗号を使用するには、次の手順に従います。
node
と入力します。caesarCipher
関数を呼び出します。caesarCipher
関数は、剰余演算子 (%
) と三項演算子 (?
) を使って、正しい暗号化または復号化キーを計算します。...
) と Array.prototype.map()
を使って、与えられた文字列の文字を反復処理します。String.prototype.charCodeAt()
と String.fromCharCode()
を使って、特殊文字、空白などを無視して、各文字を適切に変換します。Array.prototype.join()
を使って、すべての文字を1つの文字列に結合します。caesarCipher
関数を呼び出す際に、最後のパラメータである decrypt
に true
を渡します。以下は、caesarCipher
関数のコードです。
const caesarCipher = (str, shift, decrypt = false) => {
const s = decrypt ? (26 - shift) % 26 : shift;
const n = s > 0 ? s : 26 + (s % 26);
return [...str]
.map((l, i) => {
const c = str.charCodeAt(i);
if (c >= 65 && c <= 90)
return String.fromCharCode(((c - 65 + n) % 26) + 65);
if (c >= 97 && c <= 122)
return String.fromCharCode(((c - 97 + n) % 26) + 97);
return l;
})
.join("");
};
以下は、caesarCipher
関数の使用例です。
caesarCipher("Hello World!", -3); // 'Ebiil Tloia!'
caesarCipher("Ebiil Tloia!", 23, true); // 'Hello World!'
おめでとうございます!あなたはシーザー暗号の実験を完了しました。あなたのスキルを向上させるために、LabExでさらに多くの実験を行って練習することができます。