フロントエンドの暗号化と復号化、crypto-js、AES/RSA/md5 の適用

毎日のチキンスープ: 学びたいすべての瞬間が、将来の自分への願いです

コンテンツ警告 ***** 初心者コンテンツ、独学まとめ用 **** 上司は寄り道してください

以前 https の原理を読んだり、対称暗号化や非対称暗号化、さまざまな暗号化方式を見たりして混乱しましたが、この記事にまとめても数日で忘れてしまうので、理論と実践を組み合わせる必要があります。右。

最近、次の要件を持つプロジェクトに遭遇しました。[データを暗号化してローカルストレージに保存し、使用するときに取り出して復号化する。

実際、https での暗号化と復号化でも、他のプロジェクトの暗号化と復号化でも、原理は同じであり、一連のアルゴリズムが使用されます。したがって、フロントエンド開発かバックエンド開発かに関係なく、一般的に使用されるいくつかの暗号化/復号化アルゴリズムも一貫しています。

フロントエンド開発に一般的に使用されるパッケージはcrypto-jsで、これには一般的に使用される暗号化/復号化アルゴリズムがすべて含まれています。

私のプロジェクトでは、キーを使用してテキストの一部を暗号化し、secretText を生成します。復号化するときは、このキーを使用して SecretText を復号化し、テキストを取得します。このようにして、暗号化のプロセスで同じキーを使用し、復号化。これは、AES アルゴリズムなどの伝説的な対称暗号化です。

https 送信プロセスのデータは対称暗号化を使用して送信され、対称暗号化に使用されるキー (つまり、上記のキー) は非対称暗号化を使用して送信されます。

非対称暗号化は、その名前が示すように、暗号化/復号化プロセスで同じキーを使用してはなりません。一般的に使用される非対称暗号化は RSA であり、これには別のパッケージ js- crypto-rsaを使用できます。ただし、実際のプロジェクトでは使用したことがないので、RSA が非対称暗号化アルゴリズムであることを覚えておいてください。使用する場合は追加します。

要約すると、実際には知識ポイントは 2 つだけです

  1. AES は対称暗号化です
  2. RSAは非対称暗号化です

しかし!ここで問題が発生します。私はいつも 2 つの文字を混同してしまいます。それらはすべて 3 文字です。どうやって覚えればよいでしょうか? 手書きで書くとわかります。フロントエンドで使用する暗号化は、一般的に対称暗号化に使用されます。これは、AES アルゴリズムです。重要なことは、AES は対称暗号化であり、AES は対称暗号化であり、 AES は対称暗号化です。

もう 1 つの質問があります。彼らがよく話題にする、そしてとにかく非常に一般的に使用されている md5 とは何ですか?

md5 はハッシュ (ハッシュ) アルゴリズムです。はい、ハッシュ アルゴリズムとも呼ばれ、成都の入力を固定長の出力に変換します。一般的なものは md5、sha1 などです。

はい、ハッシュ アルゴリズムも暗号化アルゴリズムですが、異なる点は、

  1. 不可逆的 (出力から入力を推定することはできません)
  2. 出力の長さは同じです。
  3. 同じ入力は毎回同じ出力を生成します
  4. 異なる入力と出力は異なる必要があります

したがって、開発の過程で、ファイル (またはテキスト) が存在する場合、その md5 を計算し、しばらくしてから再度計算することができます。結果が 2 回同じであれば、ファイルは変更されていないはずです。それ以外の場合、ファイルは変更されている必要があります。ハッシュ アルゴリズムを使用してデータの一意性を判断できることがわかります。情報要約アルゴリズムです

要約すると、実際には知識ポイントは 2 つだけです

  1. md5、shaはハッシュアルゴリズムです
  2. ハッシュアルゴリズムは不可逆的です

この記事の知識ポイントのまとめ

  1. AES/RSA. と md5/sha の 2 セットの単語を覚えてください。
  2. 暗号化/復号化には AES/RSA
  3. md5 / sha は情報ダイジェストに使用されます

おすすめ

転載: blog.csdn.net/qq_17335549/article/details/130620770