1.0.4 โ€ข Published 5 months ago

@developer.nijat/crypto-utils v1.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

๐Ÿ” @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

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

1.0.4

5 months ago

1.0.3

5 months ago

1.0.2

5 months ago

1.0.1

5 months ago

1.0.0

5 months ago