Tag: aes

mongodb,node.js和encryption的数据

我正在做一个涉及大量encryption数据的项目。 基本上,这些是JSON对象序列化成一个string,然后用AES256encryption成一个Cyphertext,然后必须存储在Mongo中。 我当然可以按照上面描述的方式来做到这一点,它将把string的密文存储为一个BSON文档。 但是,这样,如果出于某种原因不能正确处理“连接字符”(例如,不同的字符集或任何原因),则会改变密文,并且不能重build原始string。 有数百万条logging,这是不可接受的(这也是缓慢的)。 有没有一种适当的方式来保存密码的某种本地二进制格式,检索它的二进制,然后将其返回到原始string? 我习惯于使用string,我的技能与二进制格式是相当生锈的。 我非常有兴趣听到你对这个主题的想法。 谢谢各位的意见, 法比安

在NodeJS和C#中AES256encryption/解密

我对以下问题的结果有了一些自由: AES在.NET中encryption并使用Node.jsencryption解密? 在.NET中解密来自node.js的AES256encryption数据 – 如何从密码中获得IV和Key C#版本的OpenSSL EVP_BytesToKey方法? 并创build了以下类文件… using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace T1.CoreUtils.Utilities { public static class CryptoUtility { public static string Encrypt(string input, string passphrase = null) { byte[] key, iv; DeriveKeyAndIV(Encoding.ASCII.GetBytes(passphrase), null, 1, out key, out iv); return Convert.ToBase64String(EncryptStringToBytes(input, key, iv)); } […]

在nodejs中解密.Net cookie

我在.Net中创build了一个encryption的cookie,我试图在nodejs中解密它的内容。 但是nodejs总是抛出exception“TypeError:DecipherFinal fail” 在.NET中,我使用AESencryption方法 932D86BB1448EEAA423F38495A2290746D81C27E55D1DC264279537006D6F4CC. 我的web.config文件有以下行 <machineKey validationKey="A5326FFC9D3B74527AECE124D0B7BE5D85D58AFB12AAB3D76319B27EE57608A5A7BCAB5E34C7F1305ECE5AC78DB1FFEC0A9435C316884AB4C83D2008B533CFD9" decryptionKey="932D86BB1448EEAA423F38495A2290746D81C27E55D1DC264279537006D6F4CC" validation="SHA1" decryption="AES" /> 在.Net中生成我的cookie的代码如下所示: var ticket = new FormsAuthenticationTicket(0, "test", DateTime.Now, DateTime.Now.AddYears(1), true, "test"); var encryptedTicket = FormsAuthentication.Encrypt(ticket); Response.Cookies.Add(new HttpCookie(cookieName, encryptedTicket)); 解密cookie的nodejs代码是 var crypto = require('crypto'); var logger = require('winston'); var deckey = "932D86BB1448EEAA423F38495A2290746D81C27E55D1DC264279537006D6F4CC"; function hex2a(hex) { var str = ''; for (var i = 0; […]

AES256encryption在node.js和objective-c之间得到不同的结果

1.Node.js var crypto = require('crypto'); var key = "my password"; var text = "text to encrypt"; var cipher = crypto.createCipher('aes-256-cbc',key); var crypted =cipher.update(text,'utf8','base64'); crypted+=cipher.final('base64'); 结果: ZeYCYOrR / w7qSAZVYht8 + Q == 。目的-C { NSString *key = @"my password"; NSString *text = @"text to encrypt"; NSData *plain = [secret dataUsingEncoding:NSUTF8StringEncoding]; NSData *cipher = [plain AES256EncryptWithKey:key]; NSLog(@"%@\n", […]

适用于NodeJs和mbedtls的encryption程序

首先,让我首先说我不是一个密码学家,我也不是很擅长编写c代码,所以请问如果这个问题的答案是显而易见的或者回答的话。 我正在开发一个消息程序,不能在目标平台上使用TLS。 因此,我需要find一种方法来使用对称预共享密钥密码(如AES)来encryption每个消息。 我正在寻求一种方法来encryption和解密一个mbedtls程序(如aescrypt2)和另一个nodejs程序之间的数据。 Mbedtls,以前是polarssl,是一个为embedded式设备提供encryption的库。 源代码包含一些示例程序,如aescrypt2,rsaencrypt,ecdsa和crypt_and_hash。 Aescrypt2工作正常,当encryption的数据也使用aescrypt2解密,但我似乎无法使用aescrypt使用nodejs crypto或任何其他程序(包括openssl)解密数据。 例如: echo 'this is a test message' >test.txt aescrypt 0 test.txt test.out hex:E76B2413958B00E193 aescrypt 1 test.out test.denc hex:E76B2413958B00E193 cat test.denc this is a test message 用openssl: openssl enc -in out.test -out outfile.txt -d -aes256 -k E76B2413958B00E193 bad magic number 一些样本节点代码,目前不工作 var crypto = require('crypto'); var AESCrypt = […]

在节点中encryption并在java中解密

我有一个在Java中的encryption代码。 我试图将encryption部分移植到节点。 基本上,节点将使用encryption模块进行encryption,然后Java将执行解密。 以下是我如何在Java中进行encryption: protected static String encrypt(String plaintext) { final byte[] KEY = { 0x6d, 0x79, 0x56, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x70, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b }; try { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); final SecretKeySpec secretKey = new SecretKeySpec(KEY, "AES"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); final String encryptedString = Base64.encodeToString( cipher.doFinal(plaintext.getBytes()), Base64.DEFAULT); return […]

使用Diffie-Hellman密钥交换和AES进行客户端HTTPencryption

在观看Diffie-Hellman密钥交换中的YouTubevideo后,我想尝试使用JavaScript实现(阿特伍德定律)。 我使用以下规则在Node.js上绘制了一个密码: 第1步:客户端和服务器在共享密钥上达成一致: 客户端和服务器从512位主要公钥pK开始 客户端生成一个512位主密钥kC,并发送powMod(3,kC,pK) 服务器生成一个512位主密钥kS,并发送powMod(3,kS,pK) 客户端和服务器使用powMod(response,privatekey,pK)作为共享密钥 第二步:沟通 在客户端发送数据之前,使用Stanford Javascript Crypto Library(256位AES,HMACauthentication,PBKDF2密码加强和CCMauthenticationencryption)使用共享密钥encryption。 一旦服务器使用共享密钥解密数据,它将生成一个新的512位主密钥,并将其作为SJCLencryption响应发送。 客户端和服务器使用powMod(3,prevSharedKey,newPrivKey)切换到新的共享密钥 现在我有几个问题 与HTTPS或其他algorithm相比,这样的系统有多安全? 这种制度最薄弱的地方是什么? 在安全性/实用性方面,使用1024位密钥更好的安全性会更好吗? HMAC / PBKDF2 / CCM选项是否过度杀伤? 是否值得调整共享密钥? 谢谢阅读!

Node.js和encryption库

我对Node的encryption库有奇怪的问题。 我写了这个简单的AEStesting脚本: var cipher = crypto.createCipher('aes-256-cbc','InmbuvP6Z8') var text = "123|123123123123123"; cipher.update(text,'utf8','hex') var crypted = cipher.final('hex') var decipher = crypto.createDecipher('aes-256-cbc','InmbuvP6Z8') decipher.update(crypted,'hex','utf8') var dec = decipher.final('utf8') 当我做console.log(dec)时,它是空的。 由于某种原因,如果我将testing设置为“123 | 123123”,它的工作原理。 那么为什么“123 | 123123”工作,而“123 | 123123123123123”不工作呢?

用python和nodejsencryption和解密

我试图encryptionPython中的一些内容,并在nodejs应用程序中对其进行解密。 我努力让两个AES实现协同工作。 这是我在哪里。 在节点中: var crypto = require('crypto'); var password = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; var input = 'hello world'; var encrypt = function (input, password, callback) { var m = crypto.createHash('md5'); m.update(password) var key = m.digest('hex'); m = crypto.createHash('md5'); m.update(password + key) var iv = m.digest('hex'); // add padding while (input.length % 16 !== 0) { input […]

使用node.js解密AES256将返回错误的最终块长度

使用这个Gist,我能够在Node.js 0.8.7中成功解密AES256。 然后当我升级到Node.js 0.10.24,我现在看到这个错误: TypeError:错误:0606506D:数字包络例程:EVP_DecryptFinal_ex:错误的最终块长度 在Decipheriv.Cipher.final(crypto.js:292:27) 这里是Gist的解密代码(这里为了方便起见): var crypto = require('crypto'); var AESCrypt = {}; AESCrypt.decrypt = function(cryptkey, iv, encryptdata) { encryptdata = new Buffer(encryptdata, 'base64').toString('binary'); var decipher = crypto.createDecipheriv('aes-256-cbc', cryptkey, iv), decoded = decipher.update(encryptdata); decoded += decipher.final(); return decoded; } AESCrypt.encrypt = function(cryptkey, iv, cleardata) { var encipher = crypto.createCipheriv('aes-256-cbc', cryptkey, iv), encryptdata = […]