Node.js 快速加密
我有一个问题,来自npm的加密包 我不想将加密字符串发送到服务器,用express router参数解密 但有一个大问题,如果我输入无效字符串,服务器会给我以下错误: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
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);
}
});