javascript
  • node.js
  • cryptography
  • node-modules
  • node-crypto
  • 2013-04-04 2 views 1 likes 
    1

    Pourquoi le code suivant lancer une erreur dans DecipherFinal Crypto -Erreur dans Crypto déchiffrage

    var crypto = require('crypto'); 
        c=new Date; 
        x= (c.getTime()+"."+c.getMilliseconds()).toString()+".uIn"; 
        key = 'sevsolut' 
         , plaintext = x 
         , cipher = crypto.createCipher('aes-256-cbc', key) 
         , decipher = crypto.createDecipher('aes-256-cbc', key); 
        cipher.update(plaintext, 'utf8', 'base64'); 
        var encryptedPassword = cipher.final('base64') 
    
        decipher.update(encryptedPassword, 'base64', 'utf8'); 
        var decryptedPassword = decipher.final('utf8'); 
    
        console.log('encrypted :', encryptedPassword); 
        console.log('decrypted :', decryptedPassword); 
    
    +0

    'c = new Date' devrait être 'c = new Date()' – pfried

    +0

    Pourquoi cryptez-vous des mots de passe au lieu de les hacher? – Mchl

    +0

    Les parenthèses @pfried sont facultatives lors de l'instanciation d'objets dans JS, tant que vous n'avez pas besoin de passer des arguments. – robertklep

    Répondre

    2

    Vous devez prendre la sortie de la mise à jour:

    var crypto = require('crypto'); 
    c=new Date(); 
    x= (c.getTime()+"."+c.getMilliseconds()).toString()+".uIn"; 
    key = "sevsolut" 
         , plaintext = x 
         , cipher = crypto.createCipher('aes-256-cbc', key) 
         , decipher = crypto.createDecipher('aes-256-cbc', key); 
    var encryptedPassword = cipher.update(plaintext, 'utf8', 'base64'); 
    encryptedPassword += cipher.final('base64') 
    
    var decryptedPassword = decipher.update(encryptedPassword, 'base64', 'utf8'); 
    decryptedPassword += decipher.final('utf8'); 
    
    console.log('encrypted :', encryptedPassword); 
    console.log('decrypted :', decryptedPassword); 
    
    +0

    @ chris..il fonctionnait parfaitement :) ..however voudrais souligner une chose .. le code en question semble fonctionner parfaitement pour les chaînes de certaine longueur (essayez-le avec une petite chaîne simple) .. seulement quand il va au-delà d'une certaine longueur est je devine quand nous devons employer en ajoutant l'étape de mise à jour. .pouvez-vous nous éclairer? – digster

    +0

    Vous ne savez pas ce que vous voulez dire. La mise à jour renvoie le contenu chiffré et peut être appelée plusieurs fois avec de nouvelles données lors de son flux - final renvoie tout le contenu chiffré restant. – laktak

    +0

    je voulais dire utiliser x = "simple" comme l'entrée de texte en clair .. alors le code dans la question fonctionne parfaitement .. si x = une grosse chaîne .. alors le code dans la question échoue et nous devons procéder en fonction de votre exemple .... – digster

    Questions connexes