Tag: encryption

Node.js`crypto.final`使得encryption的结果不同于PHP`mcrypt_encrypt`

起初,Node.jsencryption。 // Both of key and IV are hex-string, but I hide them in Stackoverflow. var secretKey = new Buffer('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'hex'), // 48 chars iv = new Buffer('bbbbbbbbbbbbbbbb', 'hex'); // 16 chars var str = 'This string will be encrypted.'; var cipher = crypto.createCipheriv('des-ede3-cbc', secretKey, iv), cryptedStr = cipher.update(str, 'utf8', 'base64') + cipher.final('base64'); 然后,PHP mcrypt。 […]

RSA Javaencryption和Node.js解密不起作用

我有一个系统需要在javascript中生成RSA密钥对,然后将公钥存储在服务器端的数据库中(作为string),然后在Java中的服务器端将使用存储的公共密钥encryptionstring密钥并发送到客户端,用私钥解密string。 我在客户端浏览器上使用节点rsa的browsified版本。 首先在客户端,我生成一个密钥对并导出密钥,将它们存储为string var NodeRSA = require('node-rsa'); var key = new NodeRSA({b: 1024}); key.exportKey("pkcs8-private"); key.exportKey("pkcs8-public-pem"); 导出的私钥存储在服务器的客户端和公共端 接下来,我用java来encryption一个接收到公钥的string,所以我把pkcs8公钥parsing成一个Java PublicKey对象。 String pubKey = "<Retrieved pkcs8 public key>"; pubKey = pubKey.replaceAll("(-+BEGIN PUBLIC KEY-+\\r?\\n|-+END PUBLIC KEY-+\\r?\\n?)", ""); byte[] keyBytes = Base64.decodeBase64(pubKey); X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes); KeyFactory kf = KeyFactory.getInstance("RSA"); PublicKey pk = kf.generatePublic(spec); 并用它encryption文本 byte[] cipherText; Cipher cipher […]

mongodb,node.js和encryption的数据

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

将AES Java解密代码移植到Node.js

我有我想要移植到Node.js的以下Java代码: // Java byte[] rawKey = "deadbeefdeadbeef".getBytes("us-ascii"); SecretKeySpec skeySpec = new SecretKeySpec(rawKey, "AES"); Cipher cip = Cipher.getInstance("AES/ECB/NoPadding"); cip.init(Cipher.DECRYPT_MODE, skeySpec); byte[] plaintext = cip.doFinal(ciphertext, 0, ciphertext.length); 这是我使用stream的Node.js的尝试 // JS, using the crypto streams API var decipher = crypto.createDecipher('aes-128-ecb', 'deadbeefdeadbeef'); decipher.setAutoPadding(false); decipher.pipe(concat(function(plaintext) { console.log(plaintext); }); decipher.end(ciphertext); 而且,Node.js也尝试使用旧的.update()和.final() API: // JS, using the `.update()` and `.final()` API var […]

Node.jsencryption中的HMAC与Google Apps脚本(GAS)

你可以解释一下,使用Node.JS的Crypto模块创buildHmacSha512签名和Google Apps脚本有什么不同吗? 代码1 – Node.JS var secret = "my secret"; var message = "message"; var crypto = require("crypto"); var hmac = new crypto.createHmac("sha512", secret); var signature = hmac.update(message).digest("base64"); console.log(signature); 代码1 – Google Apps脚本 var secret = "my secret"; var message = "message"; var signature = Utilities.base64Encode(Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_512, message, secret)); Logger.log(signature); 两个代码都会生成相同的签名: g4fZkM2XGNjhti9Wah3TU2/rvmxbL3nk4F3ZLljpED23oQ7Y7dtVmVKprQKuzyt0B4Spo214isWCvnoXXVTS8g== 但是当我们拥有base64编码密钥forms的秘密时,问题就来了。 所以,我们要做的第一步就是准备这个秘密。 我们来修改代码: 代码2 […]

MongoDB和NodeJS中的敏感数据分离 – 通过encryption密钥引用

我目前正在研究一个允许用户保存敏感date的应用程序。 由于它是一个Web应用程序,我们正在使用NodeJS和MongoDB进行持久化。 (顺便说一下,我对Node和NoSQL是全新的) 我们确实有可以存储某种病史的用户。 姓名和电子邮件存储在用户文档中,而其他内容存储在configuration文件中。 为了提高安全性,我想encrypt用户对其个人资料的引用,反之亦然。 目前,我正在使用NodeJS的Crypto库在用户configuration文件中encryption(AES256) user_id引用。 因此,引用不再是一种ObjectID,而是一个string 所以通过直接查看数据库,不可能检查哪个configuration属于哪个用户。 encrypt和decrypt用户id的秘密密钥存储在NodeJS服务器的js文件的某处。 这是一种常见的/好的方法,还是我在做一些完全错误的事情? 有没有更好的方法 – 我读mongoDB不支持任何“内置encryption” 至less,这是en /解密的代码 module.exports = function() { this.encryptionSecret = "ANYSECRET"; this.crypto = require('crypto'); this.algorithm = 'aes256'; this.encrypt = function (key) { var cipher = this.crypto.createCipher(this.algorithm, this.encryptionSecret); var encrypted = cipher.update(""+key, 'utf8', 'hex') + cipher.final('hex'); return encrypted; }; this.decrypt = function (encryptedKey) […]

Node.js / javascript在PHP中像mcrypt_ecb一样encryptionAES-128

我有一个PHP代码,在AES-128中encryption一个IP地址: $ip = "MY_IP"; $secret = "MY_KEY"; $ip = @mcrypt_ecb(MCRYPT_RIJNDAEL_128, $secret, $ip, MCRYPT_ENCRYPT); $encrypted = bin2hex($ip); // encrypted: 2854edb405cb7230ba1f4b87acddba8a 我需要做的是有相同的一段代码,但使用javascript / node.js。 我已经在crypto node.js本地模块中search,但是我无法重现相同的结果: var crypto = require('crypto'); var ip = "MY_IP"; var secret = "MY_KEY"; var cipher = crypto.createCipher("AES-128-ECB", secret); var encrypted = cipher.update(ip, 'utf8', 'hex'); encrypted += cipher.final('hex'); // encrypted: e84c06888696edda0139e98fc2c0a8cc 有人有一个想法吗?

使用SHA-256和NodeJSencryption

我试图在NodeJS中散列一个variables,如下所示: var crypto = require('crypto'); var hash = crypto.createHash('sha256'); var code = 'bacon'; code = hash.update(code); code = hash.digest(code); console.log(code); 但看起来像我误解了文档作为console.log不logging散列版本的培根,但只是一些关于SlowBuffer的信息。 什么是正确的方法来做到这一点?

在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)); } […]

如何在使用sails.js时安全地存储连接string

我在config \ adapters.js中有一个数据库连接string,如下所示。 我不想以纯文本离开连接string。 确保这些信息的最佳方式是什么,服务可以调用并连接到数据库? module.exports.adapters = { // If you leave the adapter config unspecified // in a model definition, 'default' will be used. 'default': 'mssql', mssql: { connectionString: 'Driver={SQL Server Native Client 10.0};Server=foo.domain.com;Database=RODDY;Uid=jsmith;Pwd=nw0ow21', module: 'sails-mssql' } };