Node.js 快速加密

Node.js 快速加密,node.js,string,validation,encryption,cryptojs,Node.js,String,Validation,Encryption,Cryptojs,我有一个问题,来自npm的加密包 我不想将加密字符串发送到服务器,用express router参数解密 但有一个大问题,如果我输入无效字符串,服务器会给我以下错误: TypeError: Bad input string at Decipher.update (crypto.js:144:26) at decrypt (APPDIRECTORY\encryption.js:17:22) at app.get (APPDIRECTORY\encryption.js:35:17) at Layer

我有一个问题,来自npm的加密包

我不想将加密字符串发送到服务器,用express router参数解密

但有一个大问题,如果我输入无效字符串,服务器会给我以下错误:

TypeError: Bad input string
at Decipher.update (crypto.js:144:26)
at decrypt (APPDIRECTORY\encryption.js:17:22)
at app.get (APPDIRECTORY\encryption.js:35:17)
at Layer.handle [as handle_request] (APPDIRECTORY\node_modules\express\lib\router\layer.js:95:5)
at next (APPDIRECTORY\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (APPDIRECTORY\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (APPDIRECTORY\node_modules\express\lib\router\layer.js:95:5)
at APPDIRECTORY\node_modules\express\lib\router\index.js:281:22
at param (APPDIRECTORY\node_modules\express\lib\router\index.js:354:14)
at param (APPDIRECTORY\node_modules\express\lib\router\index.js:365:14)
我只是不知道,如何禁用这个错误,并输入我自己的错误

谢谢

编辑:


若字符串不是aes-256-ctr格式,则我得到了错误。所以,如果字符串是aes-256-ctr格式,是否有方法验证字符串?

您只需尝试捕获:

function decrypt(text){
  try {
    var decipher = crypto.createDecipher(algorithm,password)
    var dec = decipher.update(text,'hex','utf8')
    dec += decipher.final('utf8');
    return { result: dec };
  } catch(err) {
    return { error: 'INVALID_ENCRYPTED_TEXT' };
  }
}


app.get('/decrypt/:string', (request, response) => {
  let string = request.params.string;
  const dec = decrypt(string);
  if (dec.error) {
    response.status(400).end();
  } else {
    response.send(dec.result);
  }
});

你能给我们看一下你的代码吗?并解释一下你在这个上下文中用“无效字符串”的意思。我在我的帖子中添加了编辑!
function decrypt(text){
  try {
    var decipher = crypto.createDecipher(algorithm,password)
    var dec = decipher.update(text,'hex','utf8')
    dec += decipher.final('utf8');
    return { result: dec };
  } catch(err) {
    return { error: 'INVALID_ENCRYPTED_TEXT' };
  }
}


app.get('/decrypt/:string', (request, response) => {
  let string = request.params.string;
  const dec = decrypt(string);
  if (dec.error) {
    response.status(400).end();
  } else {
    response.send(dec.result);
  }
});