UNPKG

@nestia/fetcher

Version:

Fetcher library of Nestia SDK

42 lines (39 loc) 1.17 kB
import crypto from "crypto"; /** * Utility class for the AES-128/256 encryption. * * - AES-128/256 * - CBC mode * - PKCS#5 Padding * - Base64 Encoding * * @author Jeongho Nam - https://github.com/samchon */ export namespace AesPkcs5 { /** * Encrypt data * * @param data Target data * @param key Key value of the encryption. * @param iv Initializer Vector for the encryption * @returns Encrypted data */ export function encrypt(data: string, key: string, iv: string): string { const bytes: number = key.length * 8; const cipher = crypto.createCipheriv(`AES-${bytes}-CBC`, key, iv); return cipher.update(data, "utf8", "base64") + cipher.final("base64"); } /** * Decrypt data. * * @param data Target data * @param key Key value of the decryption. * @param iv Initializer Vector for the decryption * @returns Decrypted data. */ export function decrypt(data: string, key: string, iv: string): string { const bytes: number = key.length * 8; const decipher = crypto.createDecipheriv(`AES-${bytes}-CBC`, key, iv); return decipher.update(data, "base64", "utf8") + decipher.final("utf8"); } }