UNPKG

@daiyu-5577/quickbuild

Version:

front-end build service

36 lines (35 loc) 1.8 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { scrypt, randomBytes, createCipheriv, createDecipheriv } from 'crypto'; import { promisify } from 'util'; const scryptAsync = promisify(scrypt); const salt = 'salt_daiyu5577'; const secret = 'secret_daiyu5577'; export function encrypt(text) { return __awaiter(this, void 0, void 0, function* () { const iv = randomBytes(16); const key = (yield scryptAsync(secret, salt, 32)); const cipher = createCipheriv('aes-256-cbc', key, iv); let encrypted = cipher.update(text, 'utf8', 'hex'); encrypted += cipher.final('hex'); return `${iv.toString('hex')}:${encrypted}`; }); } export function decrypt(encryptedText) { return __awaiter(this, void 0, void 0, function* () { const [ivHex, encryptedHex] = encryptedText.split(':'); const iv = Buffer.from(ivHex, 'hex'); const key = (yield scryptAsync(secret, salt, 32)); const decipher = createDecipheriv('aes-256-cbc', key, iv); let decrypted = decipher.update(encryptedHex, 'hex', 'utf8'); decrypted += decipher.final('utf8'); return decrypted; }); }