Articles of 哈希

NodeJS:Crypto – 无论input什么,我为什么得到相同的散列?

我正在使用encryption哈希一个string与盐200次。 我有一个奇怪的行为,散列总是相同的。 我现在已经回到了正确的结果,但是我想知道是否有人能告诉我为什么。 这是每次产生相同散列的原始代码(假定相同的盐): const crypto = require('crypto'); console.log(hashPwd('abc', '11111111111111111111111111111111')); console.log(hashPwd('def', '11111111111111111111111111111111')); function hashPwd(password, hexSalt){ var salt = hex2a(hexSalt); var hashPwd = crypto.createHash('sha256').update(salt + password); for(var x =0; x < 199; x++){ hashPwd = crypto.createHash('sha256').update(salt + hashPwd); } return hashPwd.digest('hex'); } //From: http://stackoverflow.com/questions/3745666/how-to-convert-from-hex-to-ascii-in-javascript function hex2a(hexx) { var hex = hexx.toString();//force conversion var str = ''; […]

用Node.jslogging遍历的fspath

我有一个工具,正在通过某些文件的文件系统进行并发search。 当该工具通过fssearch时,可能会发现它需要在原来不包含在search中的目录中进行search。 我应该做的是记住每个已经开始search的目录。 我想不出一个更好的方式来记忆文件path,除非存储在像这样的散列: interface IMemoizationMap { [key: string]: boolean } 所以可能看起来像: const hash = { '/Users/you/projects/x': true, '/Users/you/projects/x/lib': true, '/Users/you/projects/x/lib': true, … … '/Users/you/some-stuff/z': true }; 然后我做一个快速查找,看看我是否需要search某个目录。 这个解决scheme令人感到尴尬的是,哈希中的值几乎可以是任何东西 – 真,假,未定义的。 这是记忆遍历文件path的最好方法吗? 撇开,就是performance key in hash 一样 hash[key] ? 如果是这样的话,那么存储的值就会有一些值: 当一个目录开始被search时,我可以使这个值为false,然后当目录search结束时,我可以将值翻转为true。 那么价值至less意味着什么 。

从Node中的对象生成一致的sha256哈希

我有一个对象,我想在节点sha256散列。 该对象的内容是简单的Javascripttypes。 举例来说,让我们说: var payload = { "id": "3bab3f00-7d55-11e7-9b0a-4c32759242a5", "foo": "a message", "version": 7, }; 我创build一个像这样的散列: const crypto = require('crypto'); var hash = crypto.createHash('sha256'); hash.update( … ).digest('hex'); 问题是,要传递什么更新? crypto的文档说你可以传递一个<string> | <Buffer> | <TypedArray> | <DataView> <string> | <Buffer> | <TypedArray> | <DataView> <string> | <Buffer> | <TypedArray> | <DataView> ,这似乎表明一个对象是不是一件好事情通过。 我不能使用toString()因为它会打印"[object Object]" 。 我可以使用JSON.stringify,但是我已经在其他地方读过,stringify的输出不能保证对于相同的input是确定性的。 还有其他的select吗? […]

使用pbkdf2 crypto哈希密码无法正常工作

密码安全不是我的强项。 请帮我一下 我使用node.js 4.2.3 express 4.13.3。 我发现一些例子来encryption密码和密码的pbkdf2。 这是我的代码。 var salt = crypto.randomBytes(10).toString('base64'); console.log("salt > "+salt); crypto.pbkdf2(pass, salt , 10000, 150, 'sha512',function(err, derivedKey) { pass = derivedKey.toString('hex'); }); 最终的derivedKey不包含salt。 我错过了什么? 我应该在保存之前手动join两个string吗? 为什么一些例子使用base64和其他的hex ? 获得不同的string长度? 什么是默认的,所以我可以使用它? 为什么不在salt和哈希密码中使用basic64 ? 最终的derivedKeystring是UTF8吗? 或者只有在数据库被保存的情况下才能做到这一点? 我的数据库是UTF8。 谢谢

Redis键应该在不同的数据types中是唯一的吗?

我是Redis的新手。 我有一个redis集和hset。 我可以使用相同的密钥进行设置和hset吗? 文件说钥匙应该是唯一的。 每个数据types或唯一的每个服务器是否必须是唯一的?

Javascript散列(node.js)

我有一个哈希访问键(我在Node.js编程,如果重要的话)的麻烦。 返回状态和回复时,我有一个callback: client.metadata(folder, options, function(status, reply){ //console.log(reply) console.log(reply) console.log("New hash: " + reply['hash']); }); 问题是,reply ['hash']返回undefined。 即使reply.hash是未定义的。 我怎样才能访问散列键回复? 我logging回复,它是: { "hash": "e533d2c19d236d0d4f84e2a9666659e1", "revision": 802, "rev": "32203a97cb5", "thumb_exists": false, "bytes": 0, "modified": "Wed, 04 Jan 2012 02:39:18 +0000", "path": "/foo", "is_dir": true, "icon": "folder", "root": "dropbox", "contents": [], "size": "0 bytes" } 但是当我像上面的例子那样访问hash时,它是: 新的哈希:未定义

将.NET与nodejs(crypto)进行比较时,哈希值不同

当我尝试在节点和.NET中散列相同的密码/盐组合时,我得到了不同的值。 (是的,我知道SHA1是危险的,我也试图改变这一点)。 C# byte[] unencodedBytes = Encoding.Unicode.GetBytes(password); byte[] saltBytes = Convert.FromBase64String(salt); byte[] buffer = new byte[unencodedBytes.Length + saltBytes.Length]; Buffer.BlockCopy(unencodedBytes, 0, buffer, 0, unencodedBytes.Length); Buffer.BlockCopy(saltBytes, 0, buffer, unencodedBytes.Length – 1, saltBytes.Length); byte[] hash = HashAlgorithm.Create("SHA1").ComputeHash(buffer); //This is what I need string hashedString = Convert.ToBase64String(hash); 这是我的JS var buffer = []; var unicodePassword = new Buffer(password, 'utf16le'); for […]

encryption通道的重新encryption会在Node.js中返回不同的encryption结果

我现在已经有好几个小时了,似乎在这里或其他地方找不到类似的问题。 在拼命寻找小的错别字或其他错误后,我转向你。 我第一次实现encryption,到目前为止,所有工作都已经成功完成,我使用encryption库和Node.js一起对密码进行哈希和encryption。 到目前为止,这工作得很好,但是当我尝试做迭代rehashing时,我得不到相同的密钥。 让我告诉你我的代码: 从app.get方法: var salt = crypto.randomBytes(128); var hash = crypto.createHash('sha256'); hash.update(salt.toString('base64') + request.query.password); var hashedKey = hash.digest('base64'); console.log("original pass is: " + hashedKey) var stretchedKey = crypto.pbkdf2Sync(hashedKey, salt, 1000, 128); var promise = db.User.create({ username: request.query.username.toLowerCase(), email: request.query.email.toLowerCase(), encryptedPassword: stretchedKey.toString('base64'), randomSalt: salt.toString('base64'), premium: true }); 正如你可以在上面看到的,我为新用户生成一个随机salt,将密码附加到它并散列它。 之后,我尝试拉伸它,然后将其保存在数据库中 以下是来自authentication方法的代码: var hash = […]

Webpack – 将哈希包的URL插入静态哈巴狗模板

即时通讯使用webpack pug-html-loader +文件加载器来生成一堆静态帕格模板。 我也想开始添加哈希包的文件名,但我不能解决如何将哈希文件名插入我所有的哈巴狗模板 这是如何引用我的包当前在所有的哈巴狗模板: script(src="bundle.js") link(href="bundle.css") 我怎么修改引用bundle-[chunkhash].js / bundle-[chunkhash].css] – 我需要传递一些variables到我的webpack.config.js中的pug-html-loader吗? 注意使用extract-text-plugin将我的SASS输出到.css包文件

比较两个密码哈希值 – nodejs

我正在使用encryptionhttps://nodejs.org/api/crypto.html进行密码encryption和身份validation。 我正在更改密码页面上工作,并且在确定用户提供的密码是否与现有密码具有相同的哈希值时遇到问题。 以下是我的代码。 var createSalt = function createSalt() { return crypto.randomBytes(128).toString('base64'); }; var hashPwd = function hashPwd(salt, pwd) { var hmac = crypto.createHmac('sha256', salt); return hmac.update(pwd).digest('hex'); }; //use password , create salt, hash and compare with the existing var salt = createSalt(); var passHash = hashPwd(salt,data.Password); console.log('the password is', user.PassHash === passHash); 我期待如果上面的控制台消息打印真正的现有用户密码匹配。 但是,这两个哈希似乎并不匹配。 请问我错过了什么? […]