毎日のチキンスープ: 学びたいすべての瞬間が、将来の自分への願いです
コンテンツ警告 ***** 初心者コンテンツ、独学まとめ用 **** 上司は寄り道してください
以前 https の原理を読んだり、対称暗号化や非対称暗号化、さまざまな暗号化方式を見たりして混乱しましたが、この記事にまとめても数日で忘れてしまうので、理論と実践を組み合わせる必要があります。右。
最近、次の要件を持つプロジェクトに遭遇しました。[データを暗号化してローカルストレージに保存し、使用するときに取り出して復号化する。】
実際、https での暗号化と復号化でも、他のプロジェクトの暗号化と復号化でも、原理は同じであり、一連のアルゴリズムが使用されます。したがって、フロントエンド開発かバックエンド開発かに関係なく、一般的に使用されるいくつかの暗号化/復号化アルゴリズムも一貫しています。
フロントエンド開発に一般的に使用されるパッケージはcrypto-jsで、これには一般的に使用される暗号化/復号化アルゴリズムがすべて含まれています。
私のプロジェクトでは、キーを使用してテキストの一部を暗号化し、secretText を生成します。復号化するときは、このキーを使用して SecretText を復号化し、テキストを取得します。このようにして、暗号化のプロセスで同じキーを使用し、復号化。これは、AES アルゴリズムなどの伝説的な対称暗号化です。
https 送信プロセスのデータは対称暗号化を使用して送信され、対称暗号化に使用されるキー (つまり、上記のキー) は非対称暗号化を使用して送信されます。
非対称暗号化は、その名前が示すように、暗号化/復号化プロセスで同じキーを使用してはなりません。一般的に使用される非対称暗号化は RSA であり、これには別のパッケージ js- crypto-rsaを使用できます。ただし、実際のプロジェクトでは使用したことがないので、RSA が非対称暗号化アルゴリズムであることを覚えておいてください。使用する場合は追加します。
要約すると、実際には知識ポイントは 2 つだけです
- AES は対称暗号化です
- RSAは非対称暗号化です
しかし!ここで問題が発生します。私はいつも 2 つの文字を混同してしまいます。それらはすべて 3 文字です。どうやって覚えればよいでしょうか? 手書きで書くとわかります。フロントエンドで使用する暗号化は、一般的に対称暗号化に使用されます。これは、AES アルゴリズムです。重要なことは、AES は対称暗号化であり、AES は対称暗号化であり、 AES は対称暗号化です。
もう 1 つの質問があります。彼らがよく話題にする、そしてとにかく非常に一般的に使用されている md5 とは何ですか?
md5 はハッシュ (ハッシュ) アルゴリズムです。はい、ハッシュ アルゴリズムとも呼ばれ、成都の入力を固定長の出力に変換します。一般的なものは md5、sha1 などです。
はい、ハッシュ アルゴリズムも暗号化アルゴリズムですが、異なる点は、
- 不可逆的 (出力から入力を推定することはできません)
- 出力の長さは同じです。
- 同じ入力は毎回同じ出力を生成します
- 異なる入力と出力は異なる必要があります
したがって、開発の過程で、ファイル (またはテキスト) が存在する場合、その md5 を計算し、しばらくしてから再度計算することができます。結果が 2 回同じであれば、ファイルは変更されていないはずです。それ以外の場合、ファイルは変更されている必要があります。ハッシュ アルゴリズムを使用してデータの一意性を判断できることがわかります。情報要約アルゴリズムです
要約すると、実際には知識ポイントは 2 つだけです
- md5、shaはハッシュアルゴリズムです
- ハッシュアルゴリズムは不可逆的です
この記事の知識ポイントのまとめ
- AES/RSA. と md5/sha の 2 セットの単語を覚えてください。
- 暗号化/復号化には AES/RSA
- md5 / sha は情報ダイジェストに使用されます