Nodejs の Express フレームワークでユーザーのパスワードを暗号化して保存する方法 (md5 はユーザー情報を暗号化して保存します)

序文

登録機能の開始時には、パスワードが
直接表示されます
ここに画像の説明を挿入
が、実際の運用では、データのセキュリティを確保するために、ユーザーのパスワードを暗号化してデータベースに保存する必要があります
。このセクションでは、md5 を使用してユーザー パスワードを暗号化して保存する方法を紹介します。

組み込みモジュール暗号をインポートする

新しいutilsフォルダーを作成し、その中に暗号化方式を記述するための新しいファイルmd5.jsを作成します。
ここでは、組み込みモジュール暗号を使用する必要があります。それを直接インポートするだけです。

const crypto = require('crypto')

暗号を使用する

const crypto = require('crypto')
var d = crypto.createHash('md5').update('123').digest('hex')

パラメータの意味について話しましょう。

  1. crypto.createHash メソッドを使用します。後ろのかっこ内の内容は、使用される暗号化方式を表します。ここでは md5 です。
  2. 次の .updata は、暗号化されるコンテンツを表します。
  3. .digest は暗号化に選択されたアルゴリズムです。ここでは 16 進数を使用します。

上記のコードは 123 を暗号化するものです。結果を確認するために出力します。
ここに画像の説明を挿入
上記の暗号文は 123 を暗号化した結果です。MD5 暗号化には特性があります。同じ値を暗号化した後の暗号文の結果は同じであるため、次のようになります。ブルート フォース クラッキング (ライブラリ内の暗号文を取得して対応する平文を見つける) この問題には次の解決策があります; 4.
暗号化された値の前に文字列プレフィックスを追加します
。は文字列です。次のパスワードを解読するのは困難です

const crypto = require('crypto')
var d = crypto.createHash('md5').update('by' + '123').digest('hex')
  1. 2層暗号化とは、一度暗号文を取得した後、再度暗号化することです。

エクスポート方法

暗号化の使用については上で説明していますが、簡単に使用できるようにメソッドを以下に直接エクスポートします。

const crypto = require('crypto')
module.exports = str => {
    
    
  return crypto.createHash('md5')
    .update('by' + str)
    .digest('hex')
}

暗号化方式を使用する

上記はエクスポートされており、直接使用できます。
ここでは userModel.js で直接使用し、最初にメソッドをインポートし、次にパスワードの set メソッドを使用して、カプセル化した md5 暗号化メソッドを呼び出します。

password: {
    
    
    type: String,
    required: true,
    set: value => md5(value),
    select:false
  },

これで完了です~~ テストを実施し、登録リクエストを送信し、データベースを表示します。
データベース内のユーザーのパスワードは暗号化されています:
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_45745641/article/details/127469593