2017-01-27 161 views
-1

所以我有这个数据有Node.js的解密加密文件盐

{"encryption_iv":"ag5BHpO+NfmChFZXSr4kCA==","encryption_salt":"fiGyeCMwtWc=","filename":"file.maFile"} 

,我想与解密密钥和盐我有这个数据,但我不知道如何做到这一点。我试过用nodejs插件file-encryptor但它没有奏效。

const encryptor = require('file-encryptor'); 

var text = encryptor.decryptFile('./maFiles/***.maFile', './maFiles/output_file.txt', 'dHM8e22vEoc=', function(err) { 
    // Decryption complete. 
    console.error(err); 
}); 

console.log(text); 
+0

“盐”通常通过密钥派生函数与密码结合以生成实际加密密钥。您需要知道密码和用于生成密钥的KDF才能解密内容。 – Andy

+0

@我也知道密码,但如何解密这些? – Sandra

+0

我们没有足够的信息(使用KDF,密码块操作模式等)完全回答。我的建议是: 1.查看加密代码/与正在加密有关其进程的数据的人交谈。 2.查找文件加密器使用情况的示例,因为开发人员只是复制教程并将其部署到生产环境,这很不幸很常见。 3.尝试使用salt,密码和常用KDF(SHA-n,PBKDF2,bcrypt,scrypt)来派生密钥。这实际上是“高度知识破解”,所以准备通过hashcat或Jack the Ripper在这个上花费一些资源。 – Andy

回答

2

后,提供源的进一步分析,可以从FileEncryptor.cs看到,KDF是PBKDF2与50K迭代。因此,您需要使用PBKDF2的JS实现,并将其作为参数提供密码,salt,迭代计数和所需的密钥长度。这将返回使用的实际加密密钥。然后将密码字节从Base64编码解码为原始二进制码,并使用AES/CBC/PKCS7Padding进行解密。