forgotten encryption stuff

This commit is contained in:
m5r
2022-05-22 02:00:12 +02:00
parent a05d8cc413
commit e8703a41f8
3 changed files with 40 additions and 2 deletions

29
app/utils/encryption.ts Normal file
View File

@ -0,0 +1,29 @@
import crypto from "crypto";
import serverConfig from "~/config/config.server";
const ivLength = 16;
const algorithm = "aes-256-cbc";
const encryptionKey = serverConfig.app.encryptionKey;
export function encrypt(text: string) {
const encryptionKeyAsBuffer = Buffer.isBuffer(encryptionKey) ? encryptionKey : Buffer.from(encryptionKey, "hex");
const iv = crypto.randomBytes(ivLength);
const cipher = crypto.createCipheriv(algorithm, encryptionKeyAsBuffer, iv);
const encrypted = cipher.update(text);
const encryptedBuffer = Buffer.concat([encrypted, cipher.final()]);
return `${iv.toString("hex")}:${encryptedBuffer.toString("hex")}`;
}
export function decrypt(encryptedHexText: string) {
const encryptionKeyAsBuffer = Buffer.isBuffer(encryptionKey) ? encryptionKey : Buffer.from(encryptionKey, "hex");
const [hexIv, hexText] = encryptedHexText.split(":");
const iv = Buffer.from(hexIv!, "hex");
const encryptedText = Buffer.from(hexText!, "hex");
const decipher = crypto.createDecipheriv(algorithm, encryptionKeyAsBuffer, iv);
const decrypted = decipher.update(encryptedText);
const decryptedBuffer = Buffer.concat([decrypted, decipher.final()]);
return decryptedBuffer.toString();
}