Skip to Content
πŸ“š TutorialπŸ”— Express Js11) Encrypt

Encrypt

1. For Password / not invertible hashing

Using bcryptjs for data that are not suppose to invertible.

yarn add bcryptjs
server.ts
import * as bcrypt from 'bcryptjs'; const SALT_ROUNDS = 12; /** Hash the plain password to hash */ export async function hashPassword(plainPassword: string): Promise<string> { return await bcrypt.hash(plainPassword, SALT_ROUNDS); }; /** Check the plain password is match to the hash */ export async function checkPassword(plainPassword: string, hashPassword: string): Promise<boolean> { return await bcrypt.compare(plainPassword, hashPassword); } (async () => { const pw = await hashPassword("123abc"); const isMatch = await checkPassword("123abc", pw); })()

2. For Encrypt Data / invertible hashing

Using crypto-js with AES for data that are suppose to invertible.

yarn add crypto-js dotenv
server.ts
import "dotenv/config"; import CryptoJS from "crypto-js" // Need a secret key for encrypt / decrypt const CRYPTO_SECRET_KEY = process.env.CRYPTO_SECRET_KEY || "my_sEcReT_1@3Pw"; export function encryptStr(text: string){ const encryptText = CryptoJS.AES.encrypt(text, CRYPTO_SECRET_KEY).toString(); return encryptText; } export function decryptStr(cipherText: string){ const bytes = CryptoJS.AES.decrypt(cipherText, CRYPTO_SECRET_KEY); return bytes.toString(CryptoJS.enc.Utf8); } (() => { const encryptResult = encryptStr("OMG132"); const decryptResult = decryptStr(encryptResult); })()
Last updated on