Commit 7bd8b118 authored by 姜登's avatar 姜登

aes

parent b05a63c8
Pipeline #21177 passed with stage
in 2 seconds
......@@ -75,6 +75,12 @@ class TaskController extends Controller {
const { key, iv } = config.aesParams;
ctx.validate(this.submitRule);
const { taskId, type } = ctx.params;
let aeskey = taskId + ctx.request.body.timestamp;
if (aeskey.length < 16) {
while (aeskey.length < 16) aeskey += '0';
}
aeskey = aeskey.substring(0, 16);
ctx.request.body = ctx.helper.aesDecrypt({ algorithm: 'aes-128-ecb', key: aeskey, data: ctx.request.body.data });
const data = JSON.parse(JSON.stringify(ctx.request.body));
if (data.hasOwnProperty('password')) {
data.password = ctx.helper.aescipher('aes-128-cbc', key, iv, data.password);
......
......@@ -68,3 +68,18 @@ module.exports.aesdecipher = function(algorithm, key, iv, data) {
console.log(data, 'UTF8 plaintext deciphered: ' + cipherChunks.join(''));
return cipherChunks.join('');
};
module.exports.aesDecrypt = function ({ algorithm, key, data, iv = '' }) {
const { ctx } = this;
try {
const decipher = crypto.createDecipheriv(algorithm, key, iv);
decipher.setAutoPadding(true);
const cipherChunks = [];
cipherChunks.push(decipher.update(data, 'base64', 'utf8'));
cipherChunks.push(decipher.final('utf8'));
return cipherChunks.join('');
} catch (err) {
ctx.logger.error('aesdecrupt_ERROR', err, JSON.stringify({ algorithm, key, data, iv }));
ctx.throw('参数解密有误');
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment