Rumah hujung hadapan web tutorial js 在Express中使用bcryptjs密码加密

在Express中使用bcryptjs密码加密

Jun 07, 2018 pm 01:38 PM
express Penyulitan kata laluan

本篇文章主要介绍了Express下采用bcryptjs进行密码加密的方法,现在分享给大家,也给大家做个参考。

前几天利用Express开发了个小项目,开发登录注册模块时,采用bcryptjs进行密码加密,总结了一下内容:

bcrypt,是一个跨平台的文件加密工具。由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448位的密钥。

除了对您的数据进行加密,默认情况下,bcrypt 在删除数据之前将使用随机数据三次覆盖原始输入文件,以阻挠可能会获得您的计算机数据的人恢复数据的尝试。如果您不想使用此功能,可设定禁用此功能。

bcrypt 使用的是布鲁斯·施内尔在1993年发布的 Blowfish 加密算法。具体来说,bcrypt 使用保罗·柯切尔的算法实现。随 bcrypt 一起发布的源代码对原始版本作了略微改动。

Express下bcryptjs的使用步骤:

1.安装bcryptjs模块

npm install bcryptjs --save
Salin selepas log masuk

2.在需要加密的模块中引入bcryptjs库

var bcrypt = require('bcryptjs');
Salin selepas log masuk

3.设置加密强度

var salt = bcrypt.genSaltSync(10);
Salin selepas log masuk

4.注册时生成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();
    });
  });
});
Salin selepas log masuk

5.登录时验证HASH值,并插入数据库

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();
    });
  });
});
Salin selepas log masuk

以上采用的是bcryptjs的同步用法,下面介绍异步用法:

生成hash密码:

bcrypt.genSalt(10, function(err, salt) {
  bcrypt.hash("B4c0/\/", salt, function(err, hash) {
    // Store hash in your password DB.
  });
});
Salin selepas log masuk

密码验证:

bcrypt.compare("B4c0/\/", hash).then((res) => {
  // res === true
});
Salin selepas log masuk

下面是使用Bcrypt对数据加密的一个简单的栗子:

var mongoose = require('mongoose');
// 引入bcrypt模块
var bcrypt = require('bcrypt');
// 定义加密密码计算强度
var SALT_WORK_FACTOR = 10;

// 连接数据库
mongoose.connect('mongodb://localhost:27017/test')

// 定义用户模式
var UserSchema = new mongoose.Schema({
  name: {
    unique: true,
    type: String
  },
  password: {
    unique: true,
    type: String
  }
},{ collection: "user"});

// 使用pre中间件在用户信息存储前进行密码加密
UserSchema.pre('save', function(next){
  var user = this;

  // 进行加密(加盐)
  bcrypt.genSalt(SALT_WORK_FACTOR, function(err, salt){
    if(err){
      return next(err);
    }
    bcrypt.hash(user.password, salt, function(err, hash){
      if(err){
        return next(err);
      }
      user.password = hash;
      next();
    })
  });
});

// 编译模型
var UserBox = mongoose.model('UserBox', UserSchema);

// 创建文档对象实例
var user = new UserBox ({
  name : "Jack" ,
  password : "123456"
});

// 保存用户信息
user.save(function(err, user){
  if(err){
    console.log(err);
  }else{
    // 如果保存成功,打印用户密码
    console.log("password: " + user.password);
  }
})
Salin selepas log masuk

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在nodejs中通过redis作为缓存实现的封装缓存类

使用原生JavaScript实现放大镜效果

Vue Socket.io源码详细分析

Atas ialah kandungan terperinci 在Express中使用bcryptjs密码加密. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan ekspres untuk mengendalikan muat naik fail dalam projek nod Cara menggunakan ekspres untuk mengendalikan muat naik fail dalam projek nod Mar 28, 2023 pm 07:28 PM

Bagaimana untuk mengendalikan muat naik fail? Artikel berikut akan memperkenalkan kepada anda cara menggunakan ekspres untuk mengendalikan muat naik fail dalam projek nod saya harap ia akan membantu anda!

Penyulitan kata laluan PHP dan kaedah penyimpanan selamat? Penyulitan kata laluan PHP dan kaedah penyimpanan selamat? Jun 30, 2023 am 08:34 AM

Bagaimana untuk mengendalikan penyulitan kata laluan dan storan selamat dalam PHP? Dengan perkembangan pesat Internet, perlindungan privasi pengguna dan keselamatan data telah menjadi isu penting. Adalah penting untuk pembangun tapak web dan aplikasi memastikan kata laluan pengguna selamat. Dalam bahasa PHP, terdapat banyak cara untuk mengendalikan penyulitan dan penyimpanan kata laluan yang selamat. Artikel ini akan memperkenalkan beberapa teknologi biasa dan amalan terbaik untuk membantu pembangun mengukuhkan keselamatan kata laluan pengguna. Penyulitan Kata Laluan Menggunakan Fungsi Hash Apabila menyimpan kata laluan, ia tidak boleh disimpan dalam teks yang jelas;

Perbandingan mendalam Express dan Laravel: Bagaimana untuk memilih rangka kerja terbaik? Perbandingan mendalam Express dan Laravel: Bagaimana untuk memilih rangka kerja terbaik? Mar 09, 2024 pm 01:33 PM

Perbandingan mendalam Express dan Laravel: Bagaimana untuk memilih rangka kerja terbaik? Apabila memilih rangka kerja belakang yang sesuai untuk projek anda, Express dan Laravel sudah pasti dua pilihan popular di kalangan pembangun. Express ialah rangka kerja ringan berdasarkan Node.js, manakala Laravel ialah rangka kerja popular berdasarkan PHP. Artikel ini akan memberikan perbandingan yang mendalam tentang kelebihan dan kekurangan kedua-dua rangka kerja ini dan menyediakan contoh kod khusus untuk membantu pembangun memilih rangka kerja yang paling sesuai dengan keperluan mereka. Prestasi dan kebolehskalaanExpr

Analisis perbandingan Express dan Laravel: Pilih rangka kerja yang lebih sesuai dengan anda Analisis perbandingan Express dan Laravel: Pilih rangka kerja yang lebih sesuai dengan anda Mar 10, 2024 pm 10:15 PM

Express dan Laravel ialah dua rangka kerja web yang sangat popular, masing-masing mewakili rangka kerja cemerlang dua bahasa pembangunan utama JavaScript dan PHP. Artikel ini akan menjalankan analisis perbandingan kedua-dua rangka kerja ini untuk membantu pembangun memilih rangka kerja yang lebih sesuai untuk keperluan projek mereka. 1. Pengenalan Rangka Kerja Express ialah rangka kerja aplikasi web berdasarkan platform Node.js Ia menyediakan satu siri fungsi dan alatan berkuasa yang membolehkan pembangun membina aplikasi web berprestasi tinggi dengan cepat. Ekspres

Cara menggunakan PHP untuk melaksanakan fungsi penyulitan kata laluan Cara menggunakan PHP untuk melaksanakan fungsi penyulitan kata laluan Aug 19, 2023 am 09:16 AM

Cara menggunakan PHP untuk melaksanakan fungsi penyulitan kata laluan Kata laluan ialah kaedah pengesahan keselamatan yang sering kita perlu gunakan dalam kehidupan dan kerja. Untuk melindungi privasi pengguna, kami mesti menyulitkan dan menyimpan kata laluan pengguna untuk mengelakkan mereka daripada dicuri dan disalahgunakan oleh penjenayah. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi penyulitan kata laluan untuk meningkatkan keselamatan kata laluan pengguna. Dalam PHP, terdapat fungsi penyulitan yang sangat berkuasa password_hash() yang boleh digunakan untuk menjana nilai hash kata laluan. Fungsi ini boleh menerima dua parameter: kata laluan teks biasa dan a

PHP dan SQLite: Bagaimana untuk melaksanakan penyulitan dan pengesahan kata laluan PHP dan SQLite: Bagaimana untuk melaksanakan penyulitan dan pengesahan kata laluan Jul 29, 2023 am 10:17 AM

PHP dan SQLite: Cara melaksanakan penyulitan dan pengesahan kata laluan Pengenalan: Dalam era Internet moden, keselamatan kata laluan pengguna amat penting. Untuk melindungi privasi pengguna, tapak web biasanya menggunakan kaedah penyulitan dan pengesahan kata laluan untuk menyimpan dan memproses maklumat kata laluan pengguna. Artikel ini akan memperkenalkan cara menggunakan pangkalan data PHP dan SQLite untuk melaksanakan fungsi penyulitan dan pengesahan kata laluan. 1. Penyulitan Kata Laluan Penyulitan kata laluan merujuk kepada menukar kata laluan teks biasa pengguna kepada rentetan rawak yang kelihatan tidak boleh dibaca Melalui proses penukaran ini, walaupun pangkalan data dibocorkan.

Analisis mendalam kaedah penyulitan kata laluan MySQL Analisis mendalam kaedah penyulitan kata laluan MySQL Jun 15, 2023 pm 09:24 PM

Dengan perkembangan Internet, MySQL, sebagai sistem pengurusan pangkalan data hubungan sumber terbuka, digunakan secara meluas dalam pelbagai aplikasi. Salah satu isu keselamatan yang penting ialah penyulitan dan penyimpanan kata laluan pengguna MySQL. Jadi, apakah kaedah untuk penyulitan kata laluan MySQL? Artikel ini akan memberi anda analisis yang mendalam. Bagaimana kata laluan MySQL disimpan Sebelum memahami kaedah penyulitan kata laluan MySQL, mari kita fahami dahulu bagaimana kata laluan MySQL disimpan. Sebelum MySQL versi 5.7, algoritma cincang sehala (S

Bagaimana untuk membangunkan sistem penyulitan dan penyahsulitan kata laluan yang boleh dipercayai menggunakan PHP dan Vue.js Bagaimana untuk membangunkan sistem penyulitan dan penyahsulitan kata laluan yang boleh dipercayai menggunakan PHP dan Vue.js Jul 05, 2023 pm 08:53 PM

Cara membangunkan sistem penyulitan dan penyahsulitan kata laluan yang boleh dipercayai menggunakan PHP dan Vue.js Pengenalan: Dalam dunia dalam talian, keselamatan kata laluan amat penting. Untuk melindungi privasi dan keselamatan pengguna, kami perlu menggunakan sistem penyulitan dan penyahsulitan kata laluan yang boleh dipercayai. Dalam artikel ini, kami akan memperkenalkan cara membangunkan sistem penyulitan dan penyahsulitan kata laluan yang boleh dipercayai menggunakan PHP dan Vue.js, dengan contoh kod. 1. Memahami prinsip penyulitan kata laluan dan penyahsulitan Sebelum memulakan pembangunan, kita perlu memahami prinsip penyulitan dan penyahsulitan kata laluan. Secara umum, kami menggunakan cincang

See all articles