const crypto = require('crypto');
const key = '';
const uri = '';
const inacbg_decrypt = (data) => {
if (typeof data === 'string') {
data = data.replace(/----BEGIN ENCRYPTED DATA----|----END ENCRYPTED DATA----/g, '');
} else {
return Should be String input;
}
let keys = Buffer.from(key, 'hex');
let data_decoded = Buffer.from(data, 'base64');
let iv = Buffer.from(data_decoded.slice(10, 26));
let dec = crypto.createDecipheriv('aes-256-cbc', keys, iv);
let encoded = Buffer.from(data_decoded.slice(26))
let signature = data_decoded.slice(0, 10);
if (!inacbg_compare(signature, encoded)) {
return "SIGNATURE_NOT_MATCH";
}
let decrypted = Buffer.concat([dec.update(encoded), dec.final()]);
return decrypted.toString('utf8');
}
const inacbg_encrypt = (data) => {
if (typeof data === 'object') {
data = JSON.stringify(data);
}
let keys = Buffer.from(key, 'hex');
let data_encoded = Buffer.from(data);
let iv = crypto.randomBytes(16);
let enc = crypto.createCipheriv('aes-256-cbc', keys, iv);
let encrypt = Buffer.concat([enc.update(data_encoded), enc.final()]);
let signature = crypto.createHmac('sha256', keys)
.update(encrypt)
.digest()
.slice(0, 10);
return Buffer.concat([signature, iv, encrypt]).toString('base64');
}
const inacbg_compare = (signature, encrypt) => {
let keys = Buffer.from(key, 'hex');
let calc_signature = crypto.createHmac('sha256', keys)
.update(encrypt)
.digest()
.slice(0, 10);
if (signature.compare(calc_signature) === 0) {
return true;
}
return false;
}