Articles of node crypto

从密码导出节点密码密钥会导致与浏览器不同的结果

我试图在浏览器中重新创buildSymfony的MessageDigestPasswordEncoder 。 我有一些与browserify和encryption模块的问题。 我尝试用JavaScript生成哈希,但没有节点。 这是我的代码与节点: var crypto = require('crypto'); var encodePassword = function (raw, salt) { var salted = raw + '{'+salt+'}', hash = crypto.createHash('sha512').update(salted, 'utf-8'); for (var i = 1; i < 5000 ; i++) { hash = crypto.createHash('sha512').update(hash.digest('binary')+salted); } return hash.digest('base64'); }; console.log(encodePassword("admin", "81b6zjhf64w8kogsgkgw804ss8gc0w0")); 它返回: qmNs3bqtTeoS4uRq2Chh1fUNPu+lzn3KR7mWFHAq5NEPrK0QZ9XkLDUniZ39uosnozNrPL7mByzUZ/A19Io4sQ== 现在,考虑到我需要实现这个没有节点,我用了browserify browserify index.js > crypto.js 我创build了一个testing页面,其中包括: <script […]

python(pycrypto)和nodejs(crypto)之间不匹配的encryption(aes-128-cbc)

我有这个python代码,我需要翻译成nodejs。 python代码使用来自encryption的pycrypto。 在nodejs方面,我正在使用本地encryption模块。 encryption的string似乎不匹配。 from Crypto.Cipher import AES from binascii import b2a_hex, a2b_hex import json raw_key = [0x58, 0x86, 0x17, 0x6d, 0x88, 0x7c, 0x9a, 0xa0, 0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x28, 0xa4, 0x5a] key = str(bytearray(raw_key)) raw_iv = [0x34, 0x2e, 0x17, 0x99, 0x6d, 0x19, 0x3d, 0x28, 0xdd, 0xb3, 0xa2, 0x69, 0x5a, 0x2e, 0x6f, 0x1b] iv […]

加解密错误

为什么下面的代码在encryption中抛出DecipherFinal错误 – var crypto = require('crypto'); c=new Date; x= (c.getTime()+"."+c.getMilliseconds()).toString()+".uIn"; key = 'sevsolut' , plaintext = x , cipher = crypto.createCipher('aes-256-cbc', key) , decipher = crypto.createDecipher('aes-256-cbc', key); cipher.update(plaintext, 'utf8', 'base64'); var encryptedPassword = cipher.final('base64') decipher.update(encryptedPassword, 'base64', 'utf8'); var decryptedPassword = decipher.final('utf8'); console.log('encrypted :', encryptedPassword); console.log('decrypted :', decryptedPassword);

对node.js中的Azure Log Analytics授权标头进行编码/encryption

我一直试图让日志收集器API工作在一个node.js Azurefunction,但坚持403 /禁止错误,这表明我没有正确地形成授权头。 完整的代码在这里是一个github仓库: https://github.com/sportsmgmt-labs/Azure-Log-Analytics-Node-Function Data Collector API文档位于以下位置: https://docs.microsoft.com/en-us/azure/log-analytics/log-analytics-data-collector-api 授权标题应格式化如下: 授权:SharedKey {WorkspaceID}:{签名} 签名是这样编码/encryption的: Base64编码(HMAC-SHA256(UTF8(StringToSign))) 这是我创build授权标头的代码: var contentLength = Buffer.byteLength(req.body['log-entry'], 'utf8'); var authorization = 'POST\n' + contentLength + '\napplication/json\nx-ms-date:' + processingDate + '\n/api/logs'; // encode string using Base64(HMAC-SHA256(UTF8(StringToSign))) authorization = crypto.createHmac('sha256', sharedKey).update(authorization.toString('utf8')).digest('base64'); authorization = 'Authorization: SharedKey ' + workspaceId + ':' + authorization; 服务器的响应是: {“错误”:“InvalidAuthorization”,“Message”:“授权标头中指定了无效的scheme”} 有人能帮我理解我在做什么错吗? […]

NodeMCU node.jsencryption

我试图build立node.js和NodeMCU之间的encryption通信。 经过一番努力之后,我可以使用node.js进行encryption,并在NodeMCU上进行解密。 反过来不起作用。 mscdex的答复工作。 因此,我修改了node.js代码以利于他人。 谢谢。 NodeMCU代码: crypto = require('crypto'); cipher = crypto.encrypt("AES-CBC", "0123456789abcdef", "some clear text data",'0000000000000000') print(crypto.toHex(cipher)) //95f27285ba29aeae1e48cfc6e821b0a15a0dd6c5a1e636e10c5497c460ed057b print(crypto.toBase64(cipher)) //lfJyhboprq4eSM/G6CGwoVoN1sWh5jbhDFSXxGDtBXs= Node.js工作代码: var crypto=require('crypto'); //crypto module is required algorithm = 'aes-128-cbc'; //define algorithm password = '0123456789abcdef'; //define key iv='0000000000000000'; // define vector for cbc.. Must be 16 char length function encrypt(text,opts) { if(typeof opts […]

NodejsencryptionsetEngine

我想加载gost的openssl引擎与crypto.setEngine函数。 唯一的工作方式是指定dylib的完整path(例如“/opt/local/lib/engines/libgost.dylib”)。 但我仍然不能使用加载引擎的摘要。 调用crypto.createSign('md_gost94')失败,出现“未知消息摘要”错误。 AFAIK node.js和捆绑的openssl一起使用。 它包括gost这样的引擎吗? 它应该与外部dylib的引擎工作? 我使用MacOSX 10.10和nodejs v0.12.2。 谢谢! 更新它可以在系统libgost.so模块的Ubuntu 12.04系统上正常工作。 在OSX上,我不得不使用与端口一起安装的openssl,因为系统openssl已经过时了。

使用encryption库在NodeJS中创buildPGP兼容签名

在看encryption库我看它有能力签署数据。 有没有人知道如果一个PGP兼容的签名就像encryptionencryption库的符号命令的输出一样简单? 我有一个应用程序,需要签署和使用PGP只签署数据。 我看了OpenGPGJS项目; 但是当我使用我的应用程序的时候会炸掉它 。 我一直在尝试使用kbgpg,但是他们的文档并不是那么好, 当我按照他们默认的签名数据的例子,当我试图使用Kleopatra来validation一切都是正确的时候,签名甚至不被识别为签名。 即使我将“GPG MESSAGE”块改为“PGP SIGNATURE”块,也是如此。 由于我不需要encryption,只是签名,我以为直接使用Crypto库可能是最简单的解决scheme,但我很难find文档来validation它可以轻松完成。

Node.jsencryptioninput/输出types

我想弄清楚Node.jsencryption库,以及如何正确使用它适合我的情况。 我的目标是: 键入hexstring3132333435363738313233343536373831323334353637383132333435363738 在hexstring中的文本46303030303030303030303030303030 在hexstring中的encryption文本70ab7387a6a94098510bf0a6d972aabe 我正在通过ac 256的实现来testing这个,并通过一个网站http://www.hanewin.net/encrypt/aes/aes-test.htm 这是我迄今为止所做的,并不像我期望的那样工作。 我最好的猜测是input和输出types对于密码函数是不正确的。 唯一的作品是utf8,如果我使用hex,它失败了一个V8错误。 任何想法,我应该转换或改变,以使其工作。 var keytext = "3132333435363738313233343536373831323334353637383132333435363738"; var key = new Buffer(keytext, 'hex'); var crypto = require("crypto") var cipher = crypto.createCipher('aes-256-cbc',key,'hex'); var decipher = crypto.createDecipher('aes-256-cbc',key,'hex'); var text = "46303030303030303030303030303030"; var buff = new Buffer(text, 'hex'); console.log(buff) var crypted = cipher.update(buff,'hex','hex') 在这个例子中encryption输出是8cfdcda0a4ea07795945541e4d8c7e35这不是我所期望的。

使用RC4的NodeJS Crypto产生空白

我有一个生成RC4encryptionstring的PHP函数。 我想用Node解码这个string – 最好是使用内置的Crypto模块。 但我无法这样做 – 我只是得到一个空白的string。 PHP代码在这里http://code.google.com/p/rc4crypt/ 我的JS代码是 crypto = require('crypto'); decipher = crypto.createDecipher("rc4", "MY SECRET KEY"); text = "HELLO"; decrypted = decipher.update(text, "utf8", "hex"); decrypted += decipher.final("hex"); console.log(decrypted); 我没有得到任何输出。 我已经检查过,我的OpenSSL实现有RC4使用openssl list-message-digest-algorithms 我在OSX 10.8上,最新的节点。 我打开使用另一个模块解密 – 我试过cryptojs模块,但没有弄清楚如何使其工作 – 当我尝试RC4给了我错误。 谢谢

nodejsencryption模块与crypto-js

我对NodeJ很陌生,试图弄清楚如何使用“encryption”模块。 在使用它时,我注意到了NodeJs中的“encryption”模块和crypto-js之间的区别: 用crypto-js,我有: function SHA256Hash(password, salt, iteration) { var saltedpassword = salt + password; var sha256 = CryptoJS.algo.SHA256.create(); for(var i = 0; i < iteration; i++) { alert("saltedpassword = " + saltedpassword); sha256.update(saltedpassword); var saltedpassword = sha256.finalize(); sha256.reset(); } return saltedpassword.toString(CryptoJS.enc.Base64); } 然后打电话: var hashedPassword = SHA256Hash("123456789", "ASIN", 3) 并接收: saltedpassword = ASIN123456789 saltedpassword = […]