460ae85226
Just v2
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
import crypto from 'crypto';
|
|
const algorithm = 'aes-256-ctr';
|
|
|
|
export const base64Encode = (text: string) => {
|
|
return Buffer.from(text).toString('base64');
|
|
};
|
|
export const base64Decode = (text: string) => {
|
|
return Buffer.from(text, 'base64').toString('ascii');
|
|
};
|
|
export const encrypt = (text: string) => {
|
|
if (text) {
|
|
const iv = crypto.randomBytes(16);
|
|
const cipher = crypto.createCipheriv(algorithm, process.env['COOLIFY_SECRET_KEY'], iv);
|
|
const encrypted = Buffer.concat([cipher.update(text), cipher.final()]);
|
|
return JSON.stringify({
|
|
iv: iv.toString('hex'),
|
|
content: encrypted.toString('hex')
|
|
});
|
|
}
|
|
};
|
|
|
|
export const decrypt = (hashString: string) => {
|
|
if (hashString) {
|
|
const hash: Hash = JSON.parse(hashString);
|
|
const decipher = crypto.createDecipheriv(
|
|
algorithm,
|
|
process.env['COOLIFY_SECRET_KEY'],
|
|
Buffer.from(hash.iv, 'hex')
|
|
);
|
|
const decrpyted = Buffer.concat([
|
|
decipher.update(Buffer.from(hash.content, 'hex')),
|
|
decipher.final()
|
|
]);
|
|
return decrpyted.toString();
|
|
}
|
|
};
|