Articles of cryptojs

用CryptoJS解密openssl AES

我试图使用CryptoJS 3.1.5解密用opensslencryption的文件。 一切工作正常,如果我使用CryptoJSencryption和解密,壳在OpenSSL一样,但是当我尝试混合CryptoJS与OpenSSL一切都出错了。 该文件是使用以下命令创build的: openssl enc -aes-256-cbc -in file.txt -out file.enc -k password 我试图解密这样的: fs.readFile('file.enc', function(err, data) { var decrypted = CryptoJS.AES.decrypt( data.toString(), "password", { mode : CryptoJS.mode.CBC } ); console.log(decrypted.toString(CryptoJS.enc.Utf8)); }); // Give me this err: Uncaught Error: Malformed UTF-8 data 而另一方面,我也这样做: fs.readFile('file.txt', function(err, data) { var encrypted = CryptoJS.AES.encrypt( data.toString(), "password", { mode […]

由于crypto.DEFAULT_ENCODING ='binary',节点6升级导致aws-sdk的SignatureDoesNotMatch错误。

我已经从节点4移动到节点6,这导致任何使用aws-sdk返回以下错误消息: SignatureDoesNotMatch:我们计算的请求签名与您提供的签名不匹配。 检查您的AWS秘密访问密钥和签名方法。 详细信息请参阅服务文档。 看看代码,这似乎是由我的代码调用encryption来创build和validation散列和集合 crypto.DEFAULT_ENCODING = 'binary' 如果我从“二进制”更改为“缓冲区”(这是默认),aws-sdk的作品,但我的代码无法validation旧哈希值。 这是用来创build和检查散列的代码: crypto.pbkdf2(password, salt, iterations, keysize, function (err, derivedKey) { callback(null, [salt.toString('base64'), new Buffer(derivedKey).toString('base64')]) }); 查看crypto.DEFAULT_ENCODING的encryption文档我不确定使用缓冲区和二进制文件有什么区别。 有没有办法使用二进制编码仅用于这种encryption方法,而不会影响aws-sdk? 如果没有的话,是否有一种方法可以将使用“缓冲”编码的pbkdf2产生的散列转换为使用“二进制”编码时产生的散列?

crypto-js如何隐藏类方法?

从这开始 import crypto from 'crypto-js' global.crypto = crypto 当我从浏览器控制台访问encryption时,我得到以下错误 crypto['AES'].encrypt('MyString', 'pass').toString() // Uncaught TypeError: Cannot read property 'encrypt' of undefined(…) 但是当我从Node访问它的时候,它的工作原理是-_- crypto['AES'].encrypt('MyString','pass').toString() // Encrypted String Crypto JS如何做到这一点? 不能直接从浏览器访问,而是在节点访问?

节点encryption-js AESencryption – >解密使用情况?

我正在试图在节点上生成一个简单的crypto-jstesting,如下所示: 'use strict'; var AES = require('crypto-js/aes'); var key = 'passPhrase'; var ecr = function(str) { return AES.encrypt(str, key); }; var dcr = function(str) { return AES.decrypt(str, key); }; console.log(dcr(ecr('hello world'))); // expected result is: hello world 实际结果是: { words: [ 1751477356, 1864398703, 1919706117, 84215045 ], sigBytes: 11 } 什么是正确的用法?

Rfc2898DeriveBytes在javascript中的等价物?

我已经看到C#代码可以使用如下代码encryption和解密密码: http://wp7-travel.googlecode.com/svn/trunk/SilverlightPhoneDatabase/Cryptography.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography; using System.IO; using System.Reflection; namespace SilverlightPhoneDatabase { /// <summary> /// Class used to encrypt the database /// </summary> public static class Cryptography { /// <summary> /// Incrypt the input using password provided /// </summary> /// <param name="input">Input string to encrypt</param> /// <param name="password">Password […]

.NET和nodejs之间的AESalgorithm值差异,CryptoJS

C#中的下面的AESalgorithm返回一个不同于节点js和CryptoJS返回的encryption值。 NodeJS Crypto库和CryptoJS返回相同的值,但是.NET的AesCryptoServiceProvider返回一个不同的值。 有任何想法吗? C#示例 private const string AesIV = @"!QAZ2WSX#EDC4RFV"; private const string AesKey = @"5TGB&YHN7UJM(IK<"; public static void Main() { try { string original = "HelloWorld"; Console.WriteLine(Encrypt(original)); } catch (Exception e) { Console.WriteLine("Error: {0}", e.Message); } } /// <summary> /// AES Encryption /// </summary> private static string Encrypt(string text) { // AesCryptoServiceProvider AesCryptoServiceProvider […]

试图嘲笑github webhook请求,得到:“X-Hub-Signature不匹配blob签名”

这是一个小代理服务器设置来处理github webhooks: require('dotenv').config(); var http = require('http'); var createHandler = require('github-webhook-handler'); var handler = createHandler({ path: '/webhook', secret: process.env.GIT_WEBHOOK_SECRET }); http .createServer(function(req, res) { handler(req, res, function(err) { res.statusCode = 404; res.end('no such location'); }); }) .listen(8080); handler.on('error', function(err) { console.error('Error:', err.message); }); handler.on('push', function(event) { console.log( 'Received a push event for %s to %s', […]

Nodejs crypto.pbkdf2结果不同于CryptoJS.PBKDF2

我在前端(CryptoJS)和后端(Node.js)上使用PBKDF2,两个派生密钥必须相同,所以我使用相同的salt,相同的algorithm,相同的迭代次数,相同的密码,但派生的密钥是不同。 这是浏览器/ cryptoJS代码,在注释示例盐和密钥。 (hex) <script type="text/javascript" src="pbkdf2.js"></script> <script type="text/javascript" src="sha512.js"></script> <script> var salt = CryptoJS.lib.WordArray.random(128 / 8); var key512Bits = CryptoJS.PBKDF2('anacleto', salt, { hasher:CryptoJS.algo.SHA512, keySize: 512 / 32, iterations: 1 }); console.log(salt.toString(CryptoJS.enc.Hex)); // 1427f23fd32f8f9902768e7ab7c7ffad console.log(key512Bits.toString(CryptoJS.enc.Hex)); // de3259de39fcc55531b91b4ffb2a6c29005c674cc95b3ec5bdf18412b6087d05921f3a0e4148fc34c88a04e980481d397a4c2b143edc0cb1bb5d7434ca3b4c25 </script> 这是nodeJS代码 var crypto = require('crypto'); var salt_hex = '1427f23fd32f8f9902768e7ab7c7ffad'; var key_hex = 'de3259de39fcc55531b91b4ffb2a6c29005c674cc95b3ec5bdf18412b6087d05921f3a0e4148fc34c88a04e980481d397a4c2b143edc0cb1bb5d7434ca3b4c25'; var salt = new […]

无法使用密钥对validationNode.js Crypto的签名

我在nodejs中有一个非常小的代码,在其中我签署了一个string,然后尝试使用openssl生成的节点密码和密钥对来validation它。 无论我尝试什么,结果总是“假”,签名无法validation。 生成公钥/私钥对: openssl genrsa -out rsa_1024_priv.pem 1024 openssl rsa -in rsa_1024_priv.pem -out rsa_1024_pub.pem -outform PEM -pubout 结果键是(我不在意让他们公开): —–BEGIN RSA PRIVATE KEY—– MIICXQIBAAKBgQDCtTEic76GBqUetJ1XXrrWZcxd8vJr2raWRqBjbGpSzLqa3YLv VxVeK49iSlI+5uLX/2WFJdhKAWoqO+03oH4TDSupolzZrwMFSylxGwR5jPmoNHDM S3nnzUkBtdr3NCfq1C34fQV0iUGdlPtJaiiTBQPMt4KUcQ1TaazB8TzhqwIDAQAB AoGAM8WeBP0lwdluelWoKJ0lrPBwgOKilw8W0aqB5y3ir5WEYL1ZnW5YXivS+l2s tNELrEdapSbE9hieNBCvKMViABQXj4DRw5Dgpfz6Hc8XIzoEl68DtxL313EyouZD jOiOGWW5UTBatLh05Fa5rh0FbZn8GsHrA6nhz4Fg2zGzpyECQQDi8rN6qhjEk5If +fOBT+kjHZ/SLrH6OIeAJ+RYstjOfS0bWiM9Wvrhtr7DZkIUA5JNsmeANUGlCrQ2 cBJU2cJJAkEA26HyehCmnCkCjit7s8g3MdT0ys5WvrAFO6z3+kCbCAsGS+34EgnF yz8dDdfUYP410R5+9Cs/RkYesqindsvEUwJBALCmQVXFeKnqQ99n60ZIMSwILxKn Dhm6Tp5Obssryt5PSQD1VGC5pHZ0jGAEBIMXlJWtvCprScFxZ3zIFzy8kyECQQDB lUhHVo3DblIWRTVPDNW5Ul5AswW6JSM3qgkXxgHfYPg3zJOuMnbn4cUWAnnq06VT oHF9fPDUW9GK3yRbjNaJAkAB2Al6yY0KUhYLtWoEpQ40HlATbhNel2cn5WNs6Y5F 2hedvWdhS/zLzbtbSlOegp00d2/7IBghAfjAc3DE9DZw —–END RSA PRIVATE KEY—– —–BEGIN PUBLIC KEY—– MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCtTEic76GBqUetJ1XXrrWZcxd 8vJr2raWRqBjbGpSzLqa3YLvVxVeK49iSlI+5uLX/2WFJdhKAWoqO+03oH4TDSup olzZrwMFSylxGwR5jPmoNHDMS3nnzUkBtdr3NCfq1C34fQV0iUGdlPtJaiiTBQPM t4KUcQ1TaazB8TzhqwIDAQAB —–END PUBLIC KEY—– 那么,这是我的节点代码: var crypto = require('crypto'); var […]

使用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给了我错误。 谢谢