express加密密码时报错 Digest already called

const crypto = require('crypto');
const hash = crypto.createHash('md5');

router.post('/checkpass', function(req, res, next){
    var name = req.body.username; // 接收用户名
    var pass = req.body.password; // 接收密码
    hash.update(pass);
    pass = hash.digest('hex'); // 加密密码
    var users = new Users(); // 去验证密码
    users.checkpass(name, pass, function(err, result){
        console.log(result);
    });
});

第一次验证输入错误的密码可以,
图片描述

第二次就报 Digest already called!
图片描述

阅读 16.9k
3 个回答

第一次验证,第二次验证是什么意思
你贴出来的代码就是把pass加密了,然后进行了编码,这两行应该没问题的啊
Users是个什么类,报错的是52行,那块的代码具体是什么内容?

https://nodejs.org/api/crypto...
一个crypto实例只能调用digest一次
可以这么写:

const crypto = require('crypto');
let yyy = crypto.createHash('md5').update(xxx).digest('hex');

每次调用digest都创建个新crypto实例

新手上路,请多包涵

需要在两个文件中分别进行加密,一个文件中只能digest一次

推荐问题
宣传栏