ホームページ > 記事 > ウェブフロントエンド > Javascriptはプレイフェアとヒルのパスワードアルゴリズムを実装_基礎知識
学期の終わりまでに、情報セキュリティ入門の宿題を勉強してください。古典的な暗号アルゴリズムの中で、たまたま Playfair アルゴリズムと Hill アルゴリズムを見つけたので、それを JavaScript 言語で実装するのが興味深く、コーディング中に Baidu を調べて、ちなみに JavaScript の基礎を学びました。
プレイフェア
プレイフェア暗号(英語: Playfair cipher または Playfair square)は、代替暗号です。これは、5*5 の正方形で構成されるパスワード テーブルに基づいて記述され、テーブル内に 25 文字が配置されます。英語の 26 文字から、最も一般的に使用される Z が削除されて、パスワード テーブルが形成されます。
実装のアイデア:
1. パスワードテーブルを準備します
キーは単語または語句であり、パスワード テーブルはユーザーが指定したキーに基づいてコンパイルされます。文字が重複している場合は、それ以降の重複文字を削除できます。
キーがクレイジードッグの場合は、
にコンパイルできます。
C
|
お
|
H
|
も
|
T
|
R
|
G
|
私
|
N
|
う
|
A
|
B
|
J
|
パ
|
V
|
Y
|
E
|
K
|
Q
|
W
|
D
|
F
|
L
|
S
|
X
|
パスワード テーブルにキー文字を挿入するときに、重複する文字と Z を削除する必要があることを考慮してください。設計アルゴリズムは次のとおりです。
2. プレーンテキストを整理する
平文の 2 文字ごとのペアを形成します。同じ文字が 2 つ隣り合ってペアになっている場合、または最後の文字が 1 文字の場合は、X を挿入します。最初のコーディングが思慮深くなく、ユーザーが奇数の文字の入力を強制的に拒否したため、ユーザー エクスペリエンスが低下しました。
var k = document.getElementById("keychars").value.toUpperCase().replace(/s/ig,'');
スペースを削除し、プレーン テキストを大文字に変換します。
3. 暗号文を書き込む
平文暗号化ルール (Baidu より):
1) p1 と p2 が同じ行にある場合、対応する暗号文 c1 と c2 は、p1 と p2 のすぐ右側の文字になります。最初の列は最後の列の右側にあるとみなされます。たとえば、前の表によれば、ct は oc
に対応します。
2) p1 と p2 が同じ列にある場合、対応する暗号文 c1 と c2 は、p1 と p2 のすぐ下の文字です。最初の行は最後の行の下にあるとみなされます。
3) p1 と p2 が同じ行または列にない場合、c1 と c2 は、p1 と p2 によって決定される長方形の他の 2 つの隅にある文字になります (水平置換または垂直置換については、次の点で指定する必要があります)。先に進むか、自分で試してください)。前の表によると、wh は tk または kt に対応します。
たとえば、上の表によると、平文には生命があり、希望があります。
それは、自分がどこにいるのか、店の例のように整理できます
その場合、暗号文は次のようになります: kt yg wo ok gy nl hj of cm yg kg lm mb wf
暗号文を大文字に変換し、文字をグループに配置します。
たとえば、5 人のグループは KTYGW OOKGY NLHJO FCMYG KGLMM BWF
です。
4. 復号化
キーは 5*5 の行列に埋められます (繰り返しの文字と文字 z が削除されます)。行列内の他の未使用の文字が行列の残りの位置に順番に埋められます。平文は置換行列に従って暗号文から取得されます。 。逆のことをしてください。
効果は図に示すとおりです。
丘
Hill Password は、基本的な行列理論の原理を使用する換字式暗号です。これは、5*5 の正方形で構成されるパスワード テーブルに基づいて記述され、テーブル内に 25 文字が配置されます。英語の 26 文字から、最も一般的に使用される Z が削除されて、パスワード テーブルが形成されます。
実装のアイデア:
1、アルファベットを書きます
var chars = ['A','B','C','D','E','F','G','H','I','J','K','L '、'M'、'N'、'O'、'P'、'Q'、'R'、'S'、'T'、'U'、'V'、'W'、'X'、 'Y','Z'];
2. ランダムにキーを生成
上記のアルゴリズムには次の欠点があります:
1. プロセス指向の設計、高結合
2. ネストされたループが多すぎるため、アルゴリズムの効率を最適化する必要があります
3. ユーザーがアルファベット以外の文字を入力した場合に処理されないなど、起こり得る状況への考慮が不十分です。
概要:
情報セキュリティ入門コースをしばらく勉強した後、情報セキュリティの表面をなぞっただけです。情報セキュリティは非常に興味深いテーマです。問題が発生した場合は、可能な限り考え、可能な限り実行し、可能な限り適用する必要があります。同時に数学的基礎の蓄積を強化し、jsの基礎を固め、知識を広げることも必要です。これからの道は長くて険しいです。