Nodejs如何防止模块崩溃(加密)

时间:2014-04-16 11:49:09

标签: node.js error-handling module

我使用模块加密/解密数据。

var crypto = require('crypto');

function encrypt(text){
    var cipher = crypto.createCipher('aes-256-cbc','secret key');
    var encrypted = cipher.update(text.toString(),'utf8','hex') + cipher.final('hex');
    return encrypted;
}

function decrypt(text){
    var decipher = crypto.createDecipher('aes-256-cbc','secret key');
    var decrypted = decipher.update(text.toString(),'hex','utf8') + decipher.final('utf8');
    return decrypted ;
}

module.exports.encrypt = encrypt;
module.exports.decrypt = decrypt;

将其加载到我的路线中:

var crypt = require('./middleware/encrypt');
var id = 10;

var id_crypted = crypt.encrypt(id);
console.log(id_crypted);
var id_decrypted = crypt.decrypt(id_crypted);
console.log(id_decrypted);

所以这很好用(除了我必须在crypt模块中使用text.toString(),否则它会崩溃..)。

问题在于解密。 我无法控制将被解密的数据(我从cookie中取出它们)。

例如,如果我想要解密值“10”,那么我的所有应用程序都会崩溃,因为解密函数会抛出错误的最终块长度错误。

那么当出现错误时,如何防止我的模块崩溃?

2 个答案:

答案 0 :(得分:0)

将有问题的函数调用包装在try-catch块中。

答案 1 :(得分:-1)

这应该有效

process.on('uncaughtException', function(error) {
    console.log(error.stack);
});

取自NodeJS docs