Tag: aes

Node.js Crypto类使用更新的版本返回不同的结果

下面的代码为一个单一loginbutton生成HTML输出,并将其添加到页面中。 在节点版本0.5.x中,服务器在button单击时接受密钥,但在升级到0.10.x后,密钥不起作用并产生不同的输出。 没有错误。 encryption类是否改变了? 请注意,密钥,url和iv已被稍微更改,以避免发布安全信息,但长度正确。 var util = require('util'); var crypto = require('crypto'); var fs = require('fs'); var dateFormat = require('dateformat'); var AESCrypt = {}; AESCrypt.encrypt = function(cryptkey, iv, cleardata) { var encipher = crypto.createCipheriv('aes-256-cbc', cryptkey, iv), encryptdata = encipher.update(cleardata); encryptdata += encipher.final('binary'); encode_encryptdata = new Buffer(encryptdata, 'binary').toString('hex'); return encode_encryptdata; } function getKey(email){ var now […]

在ColdFusion中encryption,在Node.js中解密

我正在encryptionColdFusion中的string enc_string = '7001010000006aaaaaabbbbbb'; uid = encrypt(enc_string,'WTq8zYcZfaWVvMncigHqwQ==','AES','Hex'); // secret key for tests only 结果: DAEB003D7C9DBDB042C63ED214E85854EAB92A5C1EC555765B565CD8723F9655 后来我想解密Node中的那个string(只是一个例子) uid='DAEB003D7C9DBDB042C63ED214E85854EAB92A5C1EC555765B565CD8723F9655' decipher = crypto.createDecipher('aes-192-ecb', 'WTq8zYcZfaWVvMncigHqwQ==') decipher.setAutoPadding(false); dec = decipher.update(uid, 'hex', 'utf8') dec += decipher.final('utf8') 我尝试了几个密码,但没有运气。 我不想修改ColdFusion代码来使其工作,但如果没有其他机会,我会这样做。 我想用GET从一个站点发送一些encryption的数据到另一个。 有什么build议? 编辑:我尝试所有AES,DES,与IV,没有IV,与&没有填充。 也试过base64。 也没有运气。

是否可以使用node-webkit文件解码AESencryptionvideo?

使用file-encryptor和node-webkit,可以简单地将本地video文件(webm)encryption到本地encryption文件(如myvideo.dat 。 但有没有办法解密和查看这个video? 没有临时文件?

Java和Node之间的encryption不一致

我试图在Node.js中复制一个基于Java的encryptionscheme,但不幸的是我得到了不一致的结果。 这是Java方法: private Transfer encrypt(byte[] salt, String ticketNumber, String data) throws Exception { SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); KeySpec spec = new PBEKeySpec(ticketNumber.toCharArray(), salt, 1000, 128); SecretKey tmp = factory.generateSecret(spec); SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES"); String encoded = java.util.Base64.getEncoder().encodeToString(secret.getEncoded()); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); byte[] iv ={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; IvParameterSpec ips = new IvParameterSpec(iv); cipher.init(Cipher.ENCRYPT_MODE, secret, ips); AlgorithmParameters […]

如何在Python中encryption和在Javascript中解密?

我可以使用Python或JavaScriptencryption/解密,但将由Python生成的encryption数据传递给我的JavaScript代码失败。 base64编码/解码跨语言工作,以便Python上的基本编码和JavaScript上的解码检索原始的encryptionstring。 testingfunction之外,我没有使用Python解密或JavaScriptencryption,但他们在这里是为了完整性,因为一些读者错过了文本说他们存在。 在Python 2中: import base64 from pyaes import AESModeOfOperationCTR SECRET_KEY = "This_key_for_demo_purposes_only!" def encrypt(raw_data, key=SECRET_KEY): aes = AESModeOfOperationCTR(key) encrypted_data = aes.encrypt(raw_data) base64_encrypted_data = base64.b64encode(encrypted_data) return base64_encrypted_data def decrypt(base64_encrypted_data, key=SECRET_KEY): encrypted_data = base64.b64decode(base64_encrypted_data) aes = AESModeOfOperationCTR(key) decrypted = aes.decrypt(encrypted_data) return decrypted 在JavaScript(运行服务器端,在Parse.com云代码): var Buffer = require('buffer').Buffer; var Crypto = require('crypto'); encrypt: function(raw) { var […]

AES在.NET中encryption并使用Node.jsencryption解密?

我试图encryptionMono C#中的一些数据,将其发送到NodeJS服务器并在那里解密。 我想弄清楚使用什么algorithm来匹配这两个。 我发送用base64编码的encryptionstring。 所以我在JavaScript中做了这样的事情,我知道用于encryption我的C#应用​​程序中的数据的密钥: var decipher = crypto.createDecipher('aes192',binkey, biniv); var dec = decipher.update(crypted,'base64','utf8'); dec += decipher.final('utf8'); console.log("dec", dec); 在单声道我创build我的Cypher: using System.Security.Cryptography; using (Aes aesAlg = Aes.Create("aes192")) 我需要将正确的string传递给Aes.Create(),以使它使用相同的algorithm,但是我找不到它应该是什么。 看起来“aes192”是不正确的。 我不需要aes192这只是一个试用。 build议一个不同的encryption风格,如果它是有道理的。 安全不是一个问题。 这里是链接到.NET和Nodejs文档: http : //msdn.microsoft.com/en-us/library/system.security.cryptography.aes.aspx http://nodejs.org/api/crypto.html

NodeJS AES 256hex解密错误

美好的一天。 我想使用nodejs模块encryption解码以前编码的string。 string是用AES 256 ECB编码的,我把它作为hex。 我所有的尝试几乎没有,只是有时我得到空string,而不是错误。 我'需要'只有encryption,没有开放ssl。 HEX :820D4DA01CE75046C399CA314C5428C6AF8D69C6573B4DE5A6942A5277936F56 键 :7y05R9qwKaIKgIHh4vAw19X1zuknR21Y 这是我的nodejs代码。 var algorithm = 'aes-256-ecb', password = '7y05R9qwKaIKgIHh4vAw19X1zuknR21Y', encString = '820D4DA01CE75046C399CA314C5428C6AF8D69C6573B4DE5A6942A5277936F56' var decipher = crypto.createDecipher(algorithm,password); var dec = decipher.update(encString,'hex','utf8'); dec += decipher.final('utf8'); console.log(dec); 我有这个错误。 Error: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt. 需要你的帮助。 UPDATE 经过Maarten Bodewes和这个主题几个小时和无价的build议,这是工作的解决scheme。 var encString=req.query.d; console.log(encString); var algorithm = 'aes-256-ecb', password = new Buffer('7y05R9qwKaIKgIHh4vAw19X1zuknR21Y', […]

节点encryptionaes256-cbc 0x0填充的例子

从节点密码文件 : “你可以禁止自动填充input数据来阻塞大小,如果auto_padding为false,那么整个input数据的长度必须是密码块大小的倍数,否则final将会失败。非标准填充很有用,例如使用0x0而不是PKCS填充,你必须在cipher.final之前调用它。 哪一个都很好,但是,我无法在任何地方find合适的例子: 这是我的想法: function pad(str) { if((str.length*8)%256 != 0) { str+= "0"; pad(str); } } var str = "blah_blah_blah_blah_ asdf"; if(byteLength < 256) { for(i=byteLength;i<256;i+=8) { str += "0"; } } else if(byteLength > 256) { pad(str); } 现在这显然是不理想的,因为cipher.final()方法应该删除填充,但是它也不会,我也许应该填充它而不是字符。 此外,模数函数失败的string大于256 耸肩 什么是使用节点密码自定义填充(0x0)的正确方法?

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

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这不是我所期望的。