パッケージの詳細

@developer.nijat/crypto-utils

Developer-Nijat242MIT1.0.4

Cross-runtime AES-GCM encryption utils for Node.js, React, and Edge

aes, crypto, webcrypto, aes-gcm

readme

🔐 @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

📦 NPM: 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

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:

CRYPTO_KEY=YOUR_BASE64_ENCODED_KEY

📄 JavaScript:

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

// 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)