Articles of cryptojs

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

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 = […]

在NodeJS,Crypto令牌authentication环境中生成独特的令牌

使用nodejs和crypto,现在,当用户login时,我生成一个随机auth令牌: var token = crypto.randomBytes(16).toString('hex'); 我知道这不太可能,但是两个代币具有相同的价值的可能性非常小。 这个用户理论上可以在另一个账户上进行authentication。 现在,我看到两个明显的方法来通过这个: 当我生成令牌时,查询用户数据库并查看是否已经存在具有相同值的令牌。 如果是这样,只需生成另一个。 正如你所看到的,这是不完美的,因为我正在向数据库添加查询。 由于每个用户在我的数据库中都有一个唯一的用户名,我可以 使用用户名作为密钥生成器密钥生成随机令牌。 这样,两个令牌就没有相同的价值。 能够 encryption做到这一点? 它安全吗? 你会怎么做?