Tag: bcrypt

带有bcrypt的BINARYtypes的MYSQL字段

我正在看看有关字段长度和types用于bcrypt哈希的这个问题 。 几个答案提到使用BINARY MYSQL列的types。 但是,使用mysql node.js模块读取此列时,会将BINARY列读取为缓冲区types而不是string。 bcrypt比较函数bcrypt.compare(password, hash, callback)不喜欢缓冲区types: Error: data and hash must be strings at node_modules/bcrypt/bcrypt.js:150:16 这使我有两个问题: 首先,我假设我想要做的是hash_buffer.toString() ,但我注意到在文档中有可以使用不同的字符编码。 我不确定使用正确的编码是因为数据并不真正代表实际的字符。 由于我想二进制数据保持不变,我猜测ASCII。 任何人都可以确认吗? 其次,我不明白为什么不使用CHAR数据types。 哈希是专门做成一个可打印的string。 据我所知,MYSQL比较可能不会按预期进行,但是没有适当的时间来search或按密码散列进行sorting。

mongoosepre保存bcrypt没有保存

我有一个问题与bcrypt和mongoose预存function。 我的日志告诉我,一切都很好哈希…但mongoose并没有妥善保存新的哈希密码。 do post save 6BYpYJtD POST /api/v1/user 200 26.999 ms – 387 do pre save 6BYpYJtD $2a$10$OgNaou5y8JO2v4ErcZN4v.2cG9LOPjgJKzptvrKXVgCBRrrFsMHMO 把事情搞清楚: 6BYpYJtD是我生成的密码, $2a$10$OgNaou5y8JO2v4ErcZN4v.2cG9LOPjgJKzptvrKXVgCBRrrFsMHMO是我的预存function生成的哈希: UserSchema.pre('save', function(next){ var user = this; user.updated_at = Date.now; if(user.isModified('password')) { 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); console.log('do pre save',user.password,hash); user.password = hash; console.log(user.password); next(); }); }); } return next(); }); 没有错误打印,所以我真的不知道,这可能是我的错误。 […]

模块版本不匹配

bcrypt好像和节点不匹配。 我的节点版本是4.2.1 Error: Module version mismatch. Expected 46, got 14. at Error (native) at Object.Module._extensions..node (module.js:460:18) at Module.load (module.js:356:32) at Function.Module._load (module.js:311:12) at Module.require (module.js:366:17) at require (module.js:385:17) at bindings (/opt/app/app/node_modules/bcrypt/node_modules/bindings/bindings.js:76:44) at Object.<anonymous> (/opt/app/app/node_modules/bcrypt/bcrypt.js:3:35) at Module._compile (module.js:435:26) at Object.Module._extensions..js (module.js:442:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:311:12) at Module.require (module.js:366:17) at require (module.js:385:17) at Object.<anonymous> (/opt/app/app/controllers/account.js:10:14) […]

与bcrypt Node.js模块的安全差异

我的一个项目是使用bcrypt模块散列秘密。 less数人抱怨说由于依赖关系,很难安装。 我试过在Windows Server上安装它,这不是在公园散步。 人们要求我使用纯JavaScript 插件替代品,例如dcodeIO / bcrypt.js和shaneGirish / bcrypt-nodejs 。 但我真的不知道使用它们的安全含义。 他们一样可靠吗?

使用passport-local和bcrypt在node.js中检查和更新密码

当我尝试在我的节点应用程序中validation用户的现有密码时,出现[Error: data and hash arguments required]错误。 上下文是我要求我的用户在用户configuration文件页面中更改之前validation其现有的密码。 我的堆栈是node + mondodb(通过mongoose)使用passport-local与bcrypt。 相关的代码是: // code trying to match that returns the aforementioned error req.user.comparePassword(req.body.password, function (err, isMatch) { if (err) { return console.error(err); } if (isMatch) { console.log('passwords match'); // now save new password // Password verification userSchema.methods.comparePassword = function (candidatePassword, cb) { bcrypt.compare(candidatePassword, this.password, function (err, […]

当密码包含数字时,bcrypt比较返回false

我使用节点bcrypt与PostgreSQL(通过Sequelizejs哈希和保存密码。 用户的密码在beforeValidate钩子中散列,如下所示: beforeValidate: function(user, model, cb) { bcrypt.hash(user.password, 10, function(err, hash) { if ( err ) { throw err; } user.password = hash; cb(null, user); }); } 用户模型中存储哈希的列被定义为: password: { type: DataTypes.STRING, allowNull: false } 当用户login时(我使用Passport进行身份validation),该函数如下所示: passport.use(new LocalStrategy(function(username, password, done) { models.User.find({ username: username }).then(function(retrievedUser) { if ( !_.isEmpty(retrievedUser) ) { retrievedUser.verifyPassword(password, function(err, result) { […]

encryption与bcrypt有什么区别?

这些模块是必需的 const crypto = require('crypto'); const bcrypt = require('bcrypt'); 他们之间我很困惑。 我想知道它们之间有什么区别,什么时候应该使用。

Node.js和密码安全性:三个问题

我从来没有写过一个用户authentication系统,为了这个项目,我需要平衡安全性和效率(这意味着我不能花费数百个工时来处理安全问题,但是我需要保存密码和login信息安全)。 我正在使用Node.js与expression式框架和护照进行身份validation和会话。 我迄今所做的研究显示了三个要解决的问题。 在今天之前,我几乎不知道如果对这些问题有什么共同的解决scheme,几个小时的随机啄食这些研究并不能使我对我find的答案的完整性有信心。 问题: 不要在数据库中存储未encryption的纯文本密码(可能的答案:salt /散列在服务器上的密码并将散列存储在数据库中。) 不要将纯文本密码通过非安全的http连接(可能的答案:A – 只使用Https进行身份validation过程,之后使用http。B – 在login页面向用户发送随机盐,密码客户端,然后取消哈希和重新encryption数据库存储。) 不要使用GPU以每秒700,000,000个密码破解的弱encryption方法。 (可能的答案:bcrypt) 这些只是我在3个小时的研究中find的最明智的答案。 我不知道这些是否足够,它们的弱点是什么,或者有什么替代scheme。 我很感激任何进一步的洞察力(另外请注意:我甚至不确定 – https传输是否足够保护密码?)

bcrypt不安装在Ubuntu上

我试图在Ubuntu安装bcrypt ,但得到以下错误。 我无法正确理解错误消息。 下面是关于同样的问题的一些讨论: https : //github.com/ncb000gt/node.bcrypt.js/issues/90,但仍然没有find解决办法。 我也尝试更新npm( npm install -g npm )并安装bcrypt而没有运气。 isha@isha-ubuntu:~/Documents/xpressnepal$ sudo npm install npm http GET https://registry.npmjs.org/bcrypt/0.7.7 npm http 304 https://registry.npmjs.org/bcrypt/0.7.7 npm http GET https://registry.npmjs.org/bindings/1.0.0 npm http 304 https://registry.npmjs.org/bindings/1.0.0 > bcrypt@0.7.7 install /home/isha/Documents/xpressnepal/node_modules/bcrypt > node-gyp rebuild gyp ERR! configure error gyp ERR! stack Error: "pre" versions of node cannot be installed, […]

无法在Azure上部署node.js项目,Bcrypt是罪魁祸首

我目前正在部署在Azure上的node.js项目上工作。 我刚刚使用bcrypt添encryption码encryption。 我的testing计算机上的一切正常,但是当我在Azure上部署时,部署失败,我收到了以下消息: node-gyp rebuild C:\DWASFiles\Sites\invata\VirtualDirectory0\site\wwwroot\node_modules\bcrypt>node "D:\Program Files (x86)\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node- gyp\bin\node-gyp.js" rebuild gypnpm ERR! bcrypt@0.7.6 install: `node-gyp rebuild` npm ERR! `cmd "/c" "node-gyp rebuild"` failed with 1 An error has occurred during web site deployment. npm ERR! npm ERR! Failed at the bcrypt@0.7.6 install script. BCrypt安装有点棘手,因为它需要下载和安装openSSL。 那么是否有可能在Azure上部署这样的模块,或者是没有希望的? 谢谢,Stéphane