Articles of 密码学

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

密码模块中的6个随机字节可以产生的最大值是多less?

如果我使用parseInt(crypto.randomBytes(6).toString('hex'), 16); ,我能得到的最大价值是多less? 我的最终目标是获得一个浮点值(如Math.random() ),所以我想分割从parseInt(crypto.randomBytes(6).toString('hex'), 16);得到的结果parseInt(crypto.randomBytes(6).toString('hex'), 16); 由最大值。

尝试在node.js中获取AESencryptionstring以匹配.net中的encryption值

我试图encryptionnode.js中的一个值,我可以在.net中解密。 我已经给他们的代码,在事物的.net方面用于encryption值,我试图在我的node.js脚本中实现相同的encryption值。 我绝对不是一个encryption爱好者,所以请帮我弄清楚我哪里出错了。 我的node.jsencryption值与.netencryption值不匹配,而且我的node.jsencryption值实际上每次运行脚本时都不会返回相同的值。 这是.netencryption逻辑: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography; using System.IO; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine("start:"); string key = "mysecretkey"; string secret = "encryptThisMessage"; string crypto = EncryptString(secret, key); Console.WriteLine(crypto); string returnValue = DecryptString(crypto, key); Console.WriteLine(returnValue); Console.ReadKey(); } /// <summary> /// Encrpyts […]

使用node.js的密码学有问题

新手问题重新:nodejs和cryto var crypto = require('crypto'); var User = { user1: { name: 'bob', salt: 'randomSalt', password: sha1('mypass', this.salt) } }; function sha1(pass, salt) { return crypto.createHmac('sha1', salt).update(pass).digest('hex'); } 为什么我有console.log(User.user1.password == sha1('mypass', 'randomSalt') //false ?

您可以使用browserify来要求节点bcrypt客户端,然后将散列发送到服务器?

您可以使用browserify来要求节点bcrypt客户端,然后将散列发送到服务器? 这听起来真的很棒,或者它可以提供更高的安全性,然后通过SSL将明文传递给服务器? 如果我们通过websockets传递明文呢? 谢谢!

如何在NodeJS中使用aes-256-ecb正确encryptionstring并使用OpenSSL的命令行解密?

我正在尝试使用aes-256-ecb密码通过node.js的内置encryption库encryption长UTF-8编码的string。 波纹pipe是我在Node.js(v0.10.24)中写入testing的encryption代码,以及OpenSSL(OpenSSL 1.0.1 14 Mar 2012)命令行的相应输出和解密命令。 使用node.jsencryption var crypto = require('crypto'); var cipher = crypto.createCipher('aes-256-ecb','password'); var plaintext = [ 'this is a very long long long long long long', 'long long long long long long long long long', 'long long long long long long string!!!!!!!!' ].join('') console.log(cipher.update(plaintext,'utf8', 'base64') + cipher.final('base64')) 产量 XBnU6WZ9wr2GdA1YWZVhsG+mHQ0xlXXc8rAFEud6I/PqfFZL6Pdit7Sm8v+ViKNZmhgTzi7zfg8GHKFntkCDuj6F54TDaWKAdJRftLP9I+22jiKRvYtpD4SDV2oIy93MM5IMbSoBRvXayNF8H9FQnhACM5MHhHX1pLiR4yCg/l6iHH2BDLrwCSifGcGCaQYx 解密使用OpenSSL echo -n […]

primecoin? Node.JS vs Haskell的适用性

当我把它和坎宁安连锁店联系起来的时候,我正在阅读有关优质币的内容 现在我知道什么是一个坎宁汉连锁了,我找不到一个好语言的实现,我需要实现它。 我应该使用Node.JS吗? 我正在考虑使用Haskell,但是我不得不考虑很多。 我认为Node.JS会更好地工作,因为它有更好的数值支持,并且我可以使用socket.io将Node.JS网站卸载到使用我的网站(本质上是pay2view)的客户端背景。 例如:我认为haskell适合这个的一个原因是因为你可以做一个懒惰的函数,将stream出每个链的价值。 也运行裸机,没有浏览器,但我不知道这是一个很大的优势。

validation在NodeJS中使用php crypt()生成的哈希?

我有一个运行在其上的锂框架的PHP 5.3 Web服务器。 我有CRYPT_BLOWFISH生成的密码哈希值: public static function hash($password, $salt = null) { return crypt($password, $salt ?: static::salt()); } 他们得到这个检查: public static function check($password, $hash) { return String::compare(crypt($password, $hash), $hash); } 我正在寻找使我能够检查和生成类似哈希值的NodeJS脚本: 我已经尝试了这一点(现在检查): var c = crypto.createCipher('bf-cfb', password); var res = c.update(hash); res += c.final('utf8'); 哪里(不是确切的变数,但看起来像这样): var hash = '$2a$10$nA5CV2XWJGn0cbKxSHU3GOp29ypHNVJDglJ0iNFx2zFkfy3mrsRZK'; // from php var salt = […]

如何从PKCS#12文件中提取私钥,以便与nodeJS OAuth一起使用

我有一个包含私钥的p12文件,用于签署我的OAuth请求。 但是,OAuth NodeJS lib( ciaranj / node-oauth )不会将此格式作为input。 我尝试了许多OpenSsl选项(PKCS#8或传统PEM格式)从PKCS#12密钥库中提取我的私钥,但我无法获得OAuth头部签名以被接受。 我应该使用哪些OpenSsl选项来创build可用的PEM文件,如下所示: var privateKey = fs.readFileSync("privateKey.pem").toString('ascii'); var oauth= new OAuth(null, null, consumerKey, privateKey, "1.0", null, "RSA-SHA1"); 我不是OpenSsl的专家,所以任何提示都会非常受欢迎。 PS:或者,由于OAuth lib使用NodeJSencryption标记API,如果您知道使用PKCS#12文件进行签名的方式,则可以节省我的时间。

NodeJSencryption:重新使用密码对象来提高性能

我想要nodejs和一个encryption的MongoDB数据库。 我担心表演。 考虑下面的用例: 我有一个encryption的数据库,我从中检索encryptionstring列表(例如名称)[_encrypted_name_1,_encrypted_name_2,…] 我想解密列表中的所有元素 由于我担心表演,所以我做了一些testing来搞清楚。 我观察到,encryption/解密很多小string比encryption/解密一个非常大的string要慢很多。 考虑下面的例子: var crypto = require('crypto'), _ = require('lodash'), encryptedStringArray = [], decryptedStringArray = [], encryptedLongString, NB_ITERATION = 100000, stringArray = [], longString = '', myString = 'Your Name'; function encrypt(text){ var cipher = crypto.createCipher('aes-256-cbc', 'd6F3Efeq'); var crypted = cipher.update(text, 'utf8', 'hex'); crypted += cipher.final('hex'); return crypted; } function […]