2017-06-15 83 views
1

想要解密文件中的字符串。节点JS加密“Bad input string”

但是当我使用的NodeJS破译从FS字符串,它给出了错误“错误输入字符串”

var fs = require('fs'); 
var crypto = require('crypto'); 

function decrypt(text){ 
    var decipher = crypto.createDecipher('aes-256-ctr', 'password') 
    var dec = decipher.update(text,'hex','utf8') 
    dec += decipher.final('utf8'); 
    return dec; 
} 

fs.readFile('./file.json', 'utf8', function (err,data) { 
    if (err) return console.log(err); 
    console.log(decrypt(data)); 
}); 

尝试过做一个像这样的字符串时,它的工作原理

var stringInFile= "encryptedString"; 
console.log(decrypt(stringInFile)); 

寿 console.log(数据)从fs也给'encryptedString'

回答

3

您的代码的问题是没有什么。问题是你试图解密的字符串。您想要解密的字符串不能是任何字符串。它必须是由类似encrypt函数生成的字符串。

var crypto = require('crypto'); 
encrypt = function(text, passPhrase){ 
    var cipher = crypto.createCipher('AES-128-CBC-HMAC-SHA1', passPhrase); 
    var crypted = cipher.update(text,'utf8','hex'); 
    crypted += cipher.final('hex'); 
    return crypted; 
} 

decrypt = function(text, passPhrase){ 
    var decipher = crypto.createDecipher('AES-128-CBC-HMAC-SHA1', passPhrase) 
    var dec = decipher.update(text,'hex','utf8') 
    dec += decipher.final('utf8'); 
    return dec; 
} 

console.log(decrypt(encrypt("Hello", "123"), "123")); 

例如,这段代码工作得很好,没有错误。

希望它有帮助。

+0

它是,它的工作原理,如果我只是解密它像你这样的变量... 但它dosent工作时,字符串从一个文件加载.. – Stweet

+0

嗯没关系,工作在一些测试看起来像字符串正如你所说 – Stweet

+1

它是文件格式^^这是utf8与bom应该没有 – Stweet