2014-09-15 7 views
7

में क्रिप्टो का उपयोग कर रहा एन्क्रिप्शन/डिक्रिप्शन के लिए Node.js की क्रिप्टो पुस्तकालय का उपयोग कर रहा इस प्रकार में handeling त्रुटि:Node.js

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

एन्क्रिप्शन भाग के साथ कोई समस्या नहीं है। और अगर मैं डिक्रिप्शन के लिए सही पासफ्रेज भेजता हूं तो कोई समस्या नहीं है। मेरे समस्या यह है, अगर मैं डिक्रिप्शन, कोड टूट जाता है के लिए 'गलत' पदबंध भेजने के लिए और एक त्रुटि फेंक:

TypeError: Bad input string 
    at Decipher.Cipher.update (crypto.js:279:27) 
    at module.exports.decrypt (/xxxx/yyyyy/jjj/ssss/encryptionService.js:19:28) 
    at Object.module.exports.passwordDecryptor (/xxxx/yyyyy/jjj/ssss/encryptionService.js:59:56) 
    at Object.<anonymous> (/xxxx/yyyyy/jjj/ssss/test.js:32:33) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 

मैं न ऐसा चाहते हैं। मैं उदाहरण के लिए डिक्रिप्ट फ़ंक्शन रिटर्न 'पासफर्स गलत है' वाक्य चाहता हूं। प्रलेखन के अनुसार enter link description herecreateDecipher फ़ंक्शन कॉलबैक फ़ंक्शन स्वीकार नहीं करता है। किसी के पास कोई समाधान है?

+0

मेरे पास यह चुनौती भी है। क्रिप्टो लाइब्रेरी में कोई त्रुटि नहीं है? Console.log() के बजाय – Costa

उत्तर

8

मैंने के साथ समस्या हल की और पकड़ें। (कॉलबैक फ़ंक्शन काम नहीं करता है।)

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

आप एक त्रुटि बना सकते हैं, इसे फेंक सकते हैं और इसे अपने कोड में कहीं और पकड़ सकते हैं। – Danial