Tag: 密码

在NodeJS中不断从stream中生成sha1哈希

我想从stream中读取数据时更新的stream不断生成SHA1哈希。 我需要但不会工作: const crypto = require('crypto'); const hash = crypto.createHash('sha256'); hash.update('abc'); console.log(hash.digest('hex')); // hash of abc hash.update('def'); console.log(hash.digest('hex')); // hash of abcdef 这将不起作用,因为一旦调用了hash.digest(),就不能再次调用hash.update()。 每次添加块时,如何获得string的散列? 没有将整个string加载到内存中 …而不是将整个string再次写入哈希,而是重新使用已经写好的数据块加上新的数据块。 Node.js文档中的所有示例都要求stream在计算SHA1之前结束。 一旦发生这种情况,您不能再将数据写入stream中。 https://nodejs.org/api/crypto.html#crypto_class_hash const crypto = require('crypto'); const hash = crypto.createHash('sha256'); hash.on('readable', () => { const data = hash.read(); if (data) { console.log(data.toString('hex')); // Prints: // 6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50 } }); […]

在通过Neo4J中的Cypher添加语句之前摆脱/转义不需要的符号

我需要摆脱不必要的符号,例如多个空格,前导和尾随空格,以及转义单引号和双引号以及可能在我的Neo4J Cypher查询中出现问题的其他字符。 我目前使用这个( string.js节点模块和jsesc节点模块) result = S(result).trim().collapseWhitespace().s; result = jsesc(result, { 'quotes': 'double' }); 他们工作得很好,但是, 1)我想find一个更好,更简单的方法来做到这一点(最好没有这些库); 2)当我使用其他编码(例如俄文)时,jsesc似乎将其转换为其他编码,而不是UTF-8,我的脚本的其他部分不理解。 所以我想问你是否可以推荐一个RegExp来完成上面的工作,而不必使用这些模块。 谢谢!

重复的节点创build了neo4j和nodejs

我有我使用https://github.com/thingdom/node-neo4j连接器创build节点和节点之间的关系的JSON数据。 我有以下JSON格式 { att0:"abcd", att1:"val1", att2:"val2", att3:"val3", att4:"val4", att5:"val5", att6:"val6", att7:"val7", att8:"val8" } …. more like this around 1000 Here att0+att1 gives me unique id after md5 hash (let it be UID1) . and att4 gives me unique id after md5 hash (let it be UID2). and att7 gives me unique id after md5 hash […]

在NEO4J中重新调整复杂的树状结构,没有重复

我有一个getPhotosInBucket方法,它返回一个给定的桶中存在[:IN]关系的所有照片,每个照片都有自己的关系集合,每个getPhotosInBucket都包含对应于不同版本图像的属性。 小,中等,缩略图等。为了使事情更加复杂,每张照片也有一个创作者,每个创作者都有一个缩略图,像一张照片一样有多个与之相关的Meta节点。 以下是将要返回的内容的简化版本。 在这个例子中,只有一个用户创build了这个桶并创build了每张照片,但是在现实世界中,用户James可能会有一个包含100个不同图像的桶,每个图像都有自己的创build者,缩略图和创build者缩略图。 用来返回这个数据的查询有点冗长,只是为了展示我的结构,并生成一个可视化的graphics: MATCH (album:Asset:Album:Bucket {name: 'Bucketjamesprivate'}) MATCH (album)<-[:CREATED]-(creator) OPTIONAL MATCH (album)<-[:THUMBNAIL]-(albumThumb)<-[:META]-(albumThumbMeta) OPTIONAL MATCH (creator)<-[:THUMBNAIL]-(creatorThumb) OPTIONAL MATCH (creatorThumb)<-[:META]-(creatorThumbMeta) OPTIONAL MATCH (album)<-[:IN]-(photos)<-[:META]-(meta) OPTIONAL MATCH (photos)<-[:CREATED]-(photoOwner)<-[:THUMBNAIL]-(photoThumbnail)<-[:META]-(photoThumbnailMeta) RETURN DISTINCT album, albumThumb, albumThumbMeta, creator, creatorThumb, photos, meta, photoOwner, photoThumbnailMeta 这最终返回以下内容: 正如你所看到的,James创造了1个桶,1个桶缩略图和3个元节点,2个在桶中的每个都有3个元节点,最后他有一个缩略图和3个元节点。 实际返回的行数是54,只有当我把一堆照片放回去时,才能成倍增长,所以也许有更高效的方法来做这件事。 我已经尝试使用收集方法,但它引入了一些奇怪的重复,我敢肯定,但我不明白为什么足够好。 我希望我的方法最终返回的对象将是这样的: { album: { name: 'etc', foo: 'bar', bar: 'foo' }, albumThumb: [ { […]

节点js的 – 如何安全地传递令牌从http获取请求到html页面?

我正在实施自己的自定义密码重置,发送一个电子邮件,用户正在页面重置密码。 到目前为止,我已经生成了一个独特的令牌,放在一个http获取请求链接中,并通过电子邮件发送给用户。 当用户点击链接时(例如mywebsite.com/verifypasswordreset?id=96rZyAWLTu ) 我有一个明确的路线获取令牌: //Verify Password Reset app.get('/verifypasswordreset', function(req, res) { Parse.Cloud.run('verifyPasswordReset', { token: req.param("id") }, { success: function(user) { res.sendFile(path.join(__dirname + '/website/resetpassword.html')); }, error: function(error) { res.sendFile(path.join(__dirname + '/website/404.html')); } }); }); 然后,我运行一个Parse云代码函数validation如果令牌存在,如果是的话,它通过发送包含重置密码的表单的HTML响应。 ( resetpassword.html ) 此时, resetpassword.html页面的url仍然包含embedded的令牌( mywebsite.com/verifypasswordreset?id=96rZyAWLTu ),但是,一旦用户提交表单,它会执行一个http post并发布新的密码,离开令牌后面的链接,因此我不知道哪个令牌与密码重置相关联? //Reset Password app.post('/resetpassword', function(req, res) { res.send('You sent the password "' + […]

如何将variables作为parameter passing给密码查询(neo4j)

我想传递一个variables(值从请求体)作为参数的密码查询,但我不知道是否(以及如何)这是可能的。 我已经尝试了几件事情,一个“正常”的密码查询与硬编码string参数是完美的工作,但是当我想通过variables作为参数,我会得到一个错误结构(127,[[对象对象]]) 。 我在Neo4j 3.1上。 结合构build密码查询的node.js-server。 这是一个片段.. var user_firstname = req.body.firstname; var user_lastname = req.body.lastname; var user_city = req.body.city; session .run("CREATE (n:Person {firstname: {firstname}, lastname: {lastname}, city: {city}})", { firstname: user_firstname, lastname: user_lastname, city: user_city }) 在此先感谢您的帮助,欢呼!

如果存在结束节点,则创build节点和关系(否则仅创build第一个节点)

我有一个应用程序通过消息队列发送数据库写入命令给工作人员(量很大),所以不能保证它们将被接收的顺序。 我有两个节点,例如,“帐户”和“媒体”。 在这个假设的应用程序中,用户可以匿名上传媒体,这会自动为他们创build一个帐户,然后他们可以随后将其关联。 两个信息,一个用于帐户,另一个用于媒体(几乎可以肯定地由不同的工作人员)。 他们两个都不知道对方是否写下来。 我需要写一个将在每个工人上运行的查询,其中: 创build新的帐户/媒体 如果其他节点存在, POSTED_BY两者之间创buildPOSTED_BY关系 如果其他节点不存在,则只创build当前节点 返回新创build的节点 因此,无论接收到每条消息的顺序如何,第一个查询都将创build节点A,而第二个查询将创build节点B +关系。 如果我在同一个查询中创build它们,那将很简单: CREATE (m:Media { url: 'xyz.jpg' })-[:POSTED_BY]->(u:Account { username: 'johndoe' }) RETURN m,u 我已经看了CREATE UNIQUE和MERGE ,但是如果它不存在,它们似乎都会创build节点,而不是只是无所事事。

有没有办法将自定义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('…');

在Javascript中的Neo4j:参数不能查询

使用thingdom的neo4j插件时遇到了麻烦。 看起来插件不能识别{mlabel}和{mdata}作为占位符。 代码和错误如下。 非常感谢你! var query = [ 'CREATE (p:{mlabel} {{mdata}})', 'RETURN p' ].join('\n'); var params = { mlabel : 'person', mdata : { name: 'Pete', surname: 'Strutton', age: 35 } }; this.db.query(query, params, function (err, results) { if (err) throw err; return result; }); Error: Invalid input '{': expected whitespace or a label name […]

nodejsencryption模块,hash.update()将所有input存储在内存中

我有一个API路由代理从浏览器/客户端上传到AWS S3的file upload。 此API路由尝试在上传文件时对其进行stream式传输,以避免在服务器上caching文件的全部内容。 但是,路由也会尝试计算文件正文的MD5校验和。 随着文件的每个部分被分块, hash.update()方法被调用w / chunk。 http://nodejs.org/api/crypto.html#crypto_hash_update_data_input_encoding var crypto = require('crypto'); var hash = crypto.createHash('md5'); function write (chunk) { // invoked many times as file is uploaded hash.update(chunk); } function done() { // will hash buffer all chunks in memory at this point? hash.digest('hex'); } Hash的实例是否会缓冲文件的所有内容以执行散列计算(从而破坏了避免caching整个文件内存的目标)? 或者可以递增地计算MD5散列,而不需要整个input可用于执行计算?