Articles of hash

Node-Webkit – 计算部分下载文件的散列

我目前正在计算来自opensubtitles-client节点的Hasher.js文件的哈希值。 我不认为这是一个MD5散列,我相信这是一个来自OpenSubtitles的自定义algorithm 。 使用Hasher.js,通过文件path来计算文件的散列,我会使用: require("Hasher.js").getHash(file).done(function(hash){ fileHash = hash; // this is the file hash }); (其中“文件”是文件path) 这适用于完全下载的video文件(我认为即使是至less下载60-70%的文件)。 如果less于60%的文件是可用的,它总是得到相同的散列(尽pipe这不是正确的散列),并且在(可能)60%之后它总是得到正确的散列。 有什么我错过了,有没有任何节点的WebKit,Node.js或纯JavaScript实现,总是可以计算正确的部分下载文件的哈希? 或者这是从部分文件计算散列的正常限制? 如果是这样,为什么总是返回相同的2个哈希(错误的和正确的)? 多less文件真的需要直接得到正确的散列?

如果秘密作为文字variables传递,nodejs crypto hmac会产生不同的散列

我试图从它的encryption库中使用nodejs的createHmac函数。 问题:当给出(看似)相同的参数时,会产生不同的哈希值。 唯一的区别是“秘密”参数是stringvariables还是string文字。 以下SPA隔离这个问题。 我正在使用nwjs(node webkit)SDK flavor v 0.14.2在OS X El Cap上运行此代码。 任何帮助和build议感激地收到。 的index.html <!DOCTYPE html> <html> <head> <title>Context Menu</title> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> </head> <body style="width: 100%; height: 100%;"> <div id="wrapper"> </div> <script src="https://code.jquery.com/jquery-2.2.3.min.js" integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script> <script type="text/javascript" src="./index.js"></script> </body> </html> index.js var nodeCrypto = require('crypto'); var payload = […]

将Nodejs签名散列函数转换为Python

我试图连接到只有Nodejs文档的API,但是我需要使用Python。 官方文档声明hhtp请求需要像这样签名,只给出这个代码: var pk = "…. your private key …."; var data = JSON.strigify( {some JSON object} ); var signature = crypto.createSign('RSA-SHA256').update(data).sign(pk, 'base64'); 到目前为止,我被封锁在那里: from Crypto.PublicKey import RSA from Crypto.Signature import PKCS1_v1_5 from Crypto.Hash import SHA256 import base64 private_key_loc='D:\\api_key' BODY={ some JSON } data=json.dumps(BODY) def sign_data(private_key_loc, data): key = open(private_key_loc, "r").read() rsakey = RSA.importKey(key,passphrase='c9dweQ393Ftg') signer […]

将两个CRC32值组合成一个在nodejs中

我想将两个预先计算好的crc32合并成一个新的: nodejs中的示例代码: // i'm using crc32 lib: https://github.com/brianloveswords/buffer-crc32/blob/master/index.js var crc32 = require('buffer-crc32'); var foo = new Buffer('foo'); var bar = new Buffer('bar'); var fooCrc32 = crc32(foo); // <Buffer 8c 73 65 21> var barCrc32 = crc32(bar); // <Buffer 76 ff 8c aa> // how to combine crc32 of foo and crc32 of bar to get […]

如何使用nodejsvalidationSymfony2 sha512密码

我需要能够在nodevalidation一些用sha512编码使用Symfony2生成和存储的密码。 我可以检索hash和salt就好了,但使用crypto我不能pipe理生成一个哈希使用盐匹配存储在数据库中的一个。 Symfony security.yml security: encoders: "FOS\UserBundle\Model\UserInterface": sha512 散列存储在数据库中 6zxwRZc4EPXKxQes9avs0ZyCRFkC4dtpXrT983ML8VLvv9WhRnAi282bwuFuj3LHPQBGmqD1BfCLDUXGdHIjZQ== 储存在DB中的盐 qu7rjvaietws8kg4cgsggksookwsws8 由于节点端有盐,所以我使用的是crypto.pbkdf2Sync ,在configuration中没有设置迭代,它看起来像Symfony的默认值是1000.默认长度是40,但是存储的哈希长度是128,所以使用128作为长度(尝试40没有成功)。 我还尝试了Symfony 2 MessageDigestPasswordEncoder使用的5000次迭代,并将原始密码与salt合并为symfony raw_password{salt}但没有成功。 如果我使用pbkdf2Sync生成一个长度为40的密钥(按照symfony的默认值),然后使用它来更新一个用crypto.createHash var hash = user.password; var salt = user.salt; console.log(hash); console.log(crypto.pbkdf2Sync("password", salt, 1000, 128 >> 1, "sha512").toString("base64")); 生成的散列的大小和格式与存储在数据库中的散列的大小相匹配,但是它们不匹配是我的问题的值。 我也试着dynamic生成多个迭代值,没有任何运气。 产量 6zxwRZc4EPXKxQes9avs0ZyCRFkC4dtpXrT983ML8VLvv9WhRnAi282bwuFuj3LHPQBGmqD1BfCLDUXGdHIjZQ== 5QPz3zXwhak/bTD2S9IFEEFmiJ8q/fqIlSF6cWin7dqmh92EFNXjw/FLtQw7NX3LVehwcXKjfypo2EhJxiLouQ== w9+8xjklvGq9CuiqY8tEoxEetLV9lbhLJ/KaFQEooUFJrGT9/EdsVd/sSRJ+DXjsH4RQeaqsmftmuzLPgVv5MA== 我怎样才能生成散列,使其符合Symfony 2使用的方式?

python bcrypt和node.js bcrypt

我有一个python脚本,将用户数据导入到使用bcrypt来散列用户密码的mongodb中。 来自mongodb的数据也将在node.js web应用程序中使用,确保py-bcrypt生成的散列是相同的正确方法是什么? 当运行node.js版本,我得到这个: > bcrypt.genSalt(10, function(err, salt) { … bcrypt.hash("a", salt, function(err, hash) { ….. console.log(hash); ….. }); … }); undefined > $2a$10$tOT8MN1.3gsb6jWVL2hMRe0PHnJnXCxJX9xBewNl.2iRDnZCV/NeC 并在python >>> import bcrypt >>> password =b"a" >>> hashed = bcrypt.hashpw(password, bcrypt.gensalt(10)) >>> hashed '$2a$10$RzKqQppa3Y7ZZV8f7Ay5COFB5GMEGu7aLH7Fe2HchCyYF1gWVMZ/m' 使用由节点生成的散列比较Python中的散列,返回: >>> node_hash = b"$2a$10$tOT8MN1.3gsb6jWVL2hMRe0PHnJnXCxJX9xBewNl.2iRDnZCV/NeC" >>> if bcrypt.hashpw(password, node_hash) == node_hash: … print("It Matches!") … else: […]

NodeJS md5'bytestring'像PHP md5(str,true)

我遇到以下问题:我尝试将一些stringstr转换为md5 bytestring hash串md5 bytestring hash 。 在PHP中,我们可以使用md5(str, true) ,但是在JS(nodejs express)中我找不到某种方法来获得相同的结果。 我已经包含了npm模块js-md5 ,但是这个模块的arrayBuffer方法返回了另一个结果(不同于PHP md5(str,true))。 请有人帮助我吗? 谢谢

如何正确使用passport.js实现serializeUser?

好的,所以我只是进入了MEAN堆栈,我试图用Passport.js构build一个应用程序。 我只是开始用户序列化来维护会话。 在他们的例子中,Passport使用这个序列化和反序列化: passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { done(err, user); }); }); 所以,我的问题是:这个例子被认为是安全的? 如果我理解了这个权利,那么这不是说客户端可以伪造用户标识以login为具有该标识的用户? 我想我要问的是,他们的例子被认为是“安全的”,是一种正确的做事方式,或者是希望你改变这些function来产生独特的序列化。 如果这被认为是安全的,那么我想我错过了一些关于如何工作的东西,我很乐意填补。 另一方面,如果这是不安全的,我希望自己写一些函数来代替这些函数,那么下面这样做是否有效和安全: 在用户序列化后,生成一个随机散列并将其放入用户的数据库条目中。 随机哈希是代表该用户的序列号。 在反序列化之后,查找数据库中的随机哈希并返回相应的用户。 如果没有发现散列抛出某种错误。 用户注销时,从数据库中的条目中删除其串行散列。 如果直到这里我的逻辑是有效的,那么生成这个随机哈希的正确方法是什么?

使用PHP hash()和NodeJS crypto.createHash()比较SHA256,

我正在使用NodeJS为我的网站做一个实时应用程序,允许我的用户使用他们的账户login等等。 但是,我在logging部分问题。 当我在主站点上注册/login用户时,我使用PHP的hash()函数散列密码,如下所示: $passwordSalt = mcrypt_create_iv(100); $hashed = hash("sha256", $password.$passwordSalt.$serverSalt); 而且在我的网站上效果很好 但是我需要能够从NodeJS的数据库中获取用户的salt,并且能够散列用户input的密码,并根据数据库的密码进行检查,并确保它们匹配以便将用户login。 我是这样做的: //Check if Username exists, then grab the password salt and password //Hash the inputted password with the salt in the database for that user //and the salt I used for $serverSalt in PHP when creating passwords //check if hashed result in NodeJS […]

使用SHA256和.NET / Node.js散列密码

即时通讯存储在由.NET生成的数据库中的用户密码SHA256散列,我需要能够检查Node.js. 唯一的问题是.NET和Node.js为相同的密码创build不同的哈希值。 Password: ThisPassword 。净: var ue = new UnicodeEncoding(); var byteSourceText = ue.GetBytes("ThisPassword"); var byteHash = new System.Security.Cryptography.SHA256Managed().ComputeHash(byteSourceText); return Convert.ToBase64String(byteHash); //Tlwxyd7HIQhXkN6DrWJtmB9Ag2fz84P/QgMtbi9XS6Q= Node.js(使用encryption): var crypto = require('crypto'); return crypto.createHash('sha256').update('ThisPassword').digest('base64') //d7I986+YD1zS6Wz2XAcDv2K8yw3xIVUp7u/OZiDzhSY= 我发现这一点 ,但无法弄清楚如何实施他的解决scheme。