UNPKG

@developer.nijat/crypto-utils

Version:
112 lines (71 loc) โ€ข 2.43 kB
# ๐Ÿ” @developer.nijat/crypto-utils Cross-runtime AES-GCM encryption and decryption utility for JavaScript. โœ… Works in: * โœ… Node.js (v15+ with Web Crypto) * โœ… Browsers (React, Next.js, etc.) * โœ… Edge runtimes (Cloudflare Workers, Vercel Edge Functions) ๐Ÿ”— GitHub: [https://github.com/Developer-Nijat/Cross-runtime-AES-GCM-encryption](https://github.com/Developer-Nijat/Cross-runtime-AES-GCM-encryption) ๐Ÿ“ฆ NPM: [https://www.npmjs.com/package/@developer.nijat/crypto-utils](https://www.npmjs.com/package/@developer.nijat/crypto-utils) --- ## ๐Ÿš€ Features * AES-256-GCM encryption with random IV * Static key support for persistent encryption/decryption across restarts * Tiny and dependency-free * Same API works in browser, Node.js, and edge runtimes --- ## ๐Ÿ“ฆ Installation ```bash npm install "@developer.nijat/crypto-utils" # or yarn add "@developer.nijat/crypto-utils" ``` --- ## ๐Ÿ” Usage ๐Ÿ”‘ Import your secret key as base64 (recommended: 32 bytes = 256 bits): .env: ```env CRYPTO_KEY=YOUR_BASE64_ENCODED_KEY ``` ๐Ÿ“„ JavaScript: ```js import { importKeyFromBase64, encryptText, decryptText } from '@developer.nijat/crypto-utils'; const base64Key = process.env.CRYPTO_KEY; const key = await importKeyFromBase64(base64Key); // Encrypt const encrypted = await encryptText(key, 'Hello World'); // { iv: '...', data: '...' } // Decrypt const decrypted = await decryptText(key, encrypted); // 'Hello World' ``` --- ## ๐Ÿงช Generate a 32-byte base64 key ```js // Node.js only const key = crypto.randomBytes(32).toString('base64'); console.log(key); ``` --- ## โœจ API ### importKeyFromBase64(base64Key: string): CryptoKey Converts a base64 string to a usable AES-GCM CryptoKey. --- ### encryptText(key: CryptoKey, plaintext: string): Promise<{ iv, data }> Encrypts text using AES-GCM with a randomly generated IV. Returns base64-encoded output. --- ### decryptText(key: CryptoKey, { iv, data }): Promise<string> Decrypts encrypted object using AES-GCM and returns original plaintext. --- ## ๐Ÿง  Notes * AES-GCM is secure and performant * IV is generated per-encryption (12 bytes) * Output is suitable for database or JWT-style storage * Compatible with Web Crypto API everywhere --- ## ๐Ÿ“„ License MIT ยฉ Nijat Aliyev See: [LICENSE](./LICENSE%20(MIT))