2017-06-15 1 views
1

Vous souhaitez déchiffrer une chaîne à partir d'un fichier.Noeud JS crypto "Chaîne d'entrée incorrecte"

Mais quand je l'utilise nodejs déchiffrer sur la chaîne de fs, il donne l'erreur « chaîne d'entrée Bad »

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)); 
}); 

essayé juste faire une chaîne comme cela, il fonctionne

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

Tho console.log (data) de fs donne aussi 'encryptedString'

Répondre

3

Le problème avec votre code est RIEN. Le problème est la chaîne que vous essayez de déchiffrer. La chaîne que vous voulez déchiffrer ne peut pas être une chaîne. Ce doit être une chaîne générée à partir d'une fonction encrypt similaire.

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")); 

Par exemple, ce code fonctionne parfaitement bien sans erreur.

Espérons que ça aide.

+0

il est, et cela fonctionne si je décris juste comme une variable comme vous le faites ... mais il dosent travail lorsque la chaîne est chargée à partir d'un fichier .. – Stweet

+0

hmm peu importe, en travaillant sur un test ressemble à la chaîne comme vous l'avez dit – Stweet

+1

c'était le format de fichier ^^ c'était utf8 avec bom aurait dû être sans – Stweet