Articles of 哈希

独特的短安全哈希,可以解码

我有一个客户端产品的基本下载系统。 用户可以打印出他们可以在线下载文件的可读代码(15位或更低)。 现在所有唯一代码都存储在数据库中,但是由于代码量越来越高,我想更改系统。 我想采取一些秘密的盐,并生成独特的哈希,我们的下载系统可以解码和比较,如果散列是有效的(并从盐创build)。 我发现了两个节点包: https : //github.com/sehrope/node-simple-encryptor和http://hashids.org/ 使用简单的encryption器,我可以为“mysecretpassphrase”生成唯一的哈希值。 当用户input这个代码时,我可以对散列进行解码,并检查它是否是“mysecretpassphrase”,如果允许,则允许下载。 然而,哈希值是很长的(120个字母数字符号)。 与其他包(哈希)我得到url友好的人类可读代码,但我只能散列整数。 任何想法如何创build高达一百万哈希(人类可读)低于15个字母数字字母,可以再次解码? 它不需要encryption防弹。

在nodejs scrypt包中使用Firebase SCrypt params

我一直在为此奋斗一段时间,希望有人以前这样做,可以帮助我的方式。 为了将我们的用户身份validation从Firebase迁移到我们自己的服务器,我前往Firebase人员请求scrypt params。 现在我得到了这些参数,但我不知道如何映射到节点scrypt包( https://www.npmjs.com/package/scrypt )。 Firebase参数的格式如下: hash_config: { algorithm: SCRYPT, base64_signer_key: asdf1234 base64_salt_seperator: xxxx rounds: 123456 mem_cost: 098765 } 不知何故,这些应该映射到nodejs scrypt参数,但我找不到相似之处。 任何帮助将非常感激!

NodeJS散列文件在目录中recursion地

我能够在目录中实现recursion文件遍历(即探索目录中的所有子目录和文件)。 为此,我已经使用堆栈溢出各自的post的答案 。 这个片段如下: var fs = require("fs"); var tree = function(dir, done) { var results = { "path": dir, "children": [] }; fs.readdir(dir, function(err, list) { if (err) { return done(err); } var pending = list.length; if (!pending) { return done(null, results); } list.forEach(function(file) { fs.stat(dir + '/' + file, function(err, stat) { if […]

Express.js如何在login后使用安全性

我有一个web应用程序正在build立在express.js与postgresql数据库。 我想知道如何实现安全,但每个人都使用不同的东西(我想这是件好事?)。 不同的模块不同的authentication序列等我现在有什么:1)用户表单发布到例如/login2)应用程序路线到特定路线3)在路线我尝试以下 var localconstring = "postgres://" + usr + ":" + pass + "@ip:port/db"; var client = new pg.Client(localconstring); client.on('drain', client.end.bind(client)); client.connect(function (err, client, done) { 数据库使用md5,所以pass已经被db保护了。 究竟应该发生什么? 我应该用salt和散列的用户名和密码,然后保存咸/散列的凭据旁边的盐,然后使用数据库的MD5也? 如果是这样的模块? 我应该如此login或尝试从pg_roles /用户select* 非常感谢! (关于盐和散列如果可能的话,一些详细的例子,因为我很熟悉authentication安全) 忘了提及。 cookies ..authentication后,我设置了以下的cookie: res.cookie('user', req.body.lguser.username, { signed: true }) res.cookie('watcher', o, { signed: true }) 之后再看看 req.signedCookies.user !== undefined 签名属性是否安全?

有没有办法将自定义encryptionalgorithm添加到nodejsencryption模块? 怎么样?

我需要为每个上传的文件生成一个哈希。 散列值必须与为给定文件生成的散列值git相同(这是一个俗称的sha1变体)。 我看着/nodejs-v0.10.22-src/core-modules-sources/lib/crypto.js 。 库指的是本地绑定。 为了便于携带,我不想依赖本地代码。 有没有一种方法可以将自定义encryptionalgorithm添加到JavaScript中的nodejsencryption模块中,以便我可以执行以下操作: var hash = crypto.createHash('githash'); hash.update('…');

通过键下划线聚集哈希

我在机器学习应用程序上工作。 当我需要使用数组和哈希运算时,我使用underscorejs。 问题在于,ML中有一个交叉validation的方法,当你需要计算性能的几倍。 对于每一个折叠,我有一个哈希的性能参数,如下所示 { 'F1': 0.8, 'Precision': 0.7, 'Recall':0.9 } 我把所有的哈希都推送到数组中,最后我有一组哈希,就像下面这样 [ { 'F1': 0.8, 'Precision': 0.7, 'Recall':0.9 }, { 'F1': 0.5, 'Precision': 0.6, 'Recall':0.4 }, { 'F1': 0.4, 'Precision': 0.3, 'Recall':0.4 } ] 问题是,最后我想计算散列的每个参数的平均值,即我想根据参数对所有散列进行总结,然后将每个参数除以折叠的数量,在我的情况3中。 如果有任何优雅的方式来做下划线和JavaScript? 一个重要的一点是有时候我需要做这个聚合,当这样的哈希像下面这样折叠 { label1:{ 'F1': 0.8, 'Precision': 0.7, 'Recall':0.9 }, label2:{ 'F1': 0.8, 'Precision': 0.7, 'Recall':0.9 }, … } […]

如果散列的密码在DB中,则小人可以在login时使用input框中的密码

我读了这是模块(bcrypt)用来做login,密码保存的东西。 就我的理解而言,它解决的主要问题是,如果黑客访问您的数据库,并且不散列密码,黑客就可以轻松地复制和粘贴用户名和密码并访问该帐户。 该模块提供了比较散列string和通过req.body.password发送的密码的req.body.password 。 我对哈希的理解是,它需要一个文本,并创build一串长长的随机字符。 在string存储在mongoDB password字段中的应用程序中,如何防止黑客将随机string复制并粘贴到input框中并如此login? 所以我没有看到哈希的问题。

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吗? […]