この記事では、Express でのパスワード暗号化に bcryptjs を使用する方法を主に紹介し、参考として提供します。
数日前、Express を使用して小さなプロジェクトを開発しました。ログインおよび登録モジュールを開発する際、パスワード暗号化に bcryptjs が使用されました。内容を要約すると、
bcrypt はクロスプラットフォームのファイル暗号化ツールです。これによって暗号化されたファイルは、サポートされているすべてのオペレーティング システムおよびプロセッサ上で転送できます。パスワードは 8 ~ 56 文字である必要があり、内部で 448 ビットのキーに変換されます。
データの暗号化に加えて、デフォルトでは、bcrypt は元の入力ファイルを削除する前にランダムなデータで 3 回上書きし、コンピューターのデータにアクセスする可能性のある誰かによるファイルの回復の試みを阻止します。この機能を使用したくない場合は、無効にすることができます。
bcrypt は、1993 年に Bruce Schnell によってリリースされた Blowfish 暗号化アルゴリズムを使用します。具体的には、bcrypt は Paul Kircher のアルゴリズムを使用して実装されています。 bcrypt で配布されるソース コードは、オリジナル バージョンからわずかに変更されています。
Express で bcryptjs を使用する手順:
1. bcryptjs モジュールをインストールします
npm install bcryptjs --save
2. 暗号化の強度を設定します
var bcrypt = require('bcryptjs');
4.登録時に HASH 値を確認し、データベースに挿入します
var salt = bcrypt.genSaltSync(10);
5. ログイン時に HASH 値を確認し、データベースに挿入します
router.post('/register', function(req, res, next){ // 从连接池获取连接 pool.getConnection(function(err, connection) { // 获取前台页面传过来的参数 var param = req.query || req.params; /*生成HASH值*/ var hash = bcrypt.hashSync(param.pwd,salt); // 建立连接 新增用户 connection.query(userSQL.insert, ["",hash,param.phone,"","","",0], function(err, result) { res.send(result); // 释放连接 connection.release(); }); }); });
上記は bcryptjs の同期的な使用方法を以下に紹介します。
ハッシュ パスワードの生成:router.post('/login', function(req, res, next){ // 从连接池获取连接 pool.getConnection(function(err, connection) { // 获取前台页面传过来的参数 var param = req.query || req.params; // 建立连接 根据手机号查找密码 connection.query(userSQL.getPwdByPhoneNumber, [param.phone], function(err, result) { if(bcrypt.compareSync(param.pwd,result[0].password)){ res.send("1"); connection.query(userSQL.updateLoginStatusById, [1,result[0].id], function(err, result) { }); }else{ res.send("0"); } // 释放连接 connection.release(); }); }); });
bcrypt.genSalt(10, function(err, salt) { bcrypt.hash("B4c0/\/", salt, function(err, hash) { // Store hash in your password DB. }); });
nodejsのキャッシュとしてredisを介して実装されたカプセル化されたキャッシュクラス
以上がExpress での bcryptjs パスワード暗号化の使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。