| name | data-encryption |
| description | Implement strong encryption using AES, RSA, TLS, and proper key management. Use when securing data at rest, in transit, or implementing end-to-end encryption.
|
Data Encryption
Table of Contents
Overview
Implement robust encryption strategies for protecting sensitive data at rest and in transit using industry-standard cryptographic algorithms and key management practices.
When to Use
- Sensitive data storage
- Database encryption
- File encryption
- Communication security
- Compliance requirements (GDPR, HIPAA, PCI-DSS)
- Password storage
- End-to-end encryption
Quick Start
Minimal working example:
const crypto = require("crypto");
const fs = require("fs").promises;
class EncryptionService {
constructor() {
this.algorithm = "aes-256-gcm";
this.keyLength = 32;
this.ivLength = 16;
this.saltLength = 64;
this.tagLength = 16;
}
generateKey() {
return crypto.randomBytes(this.keyLength);
}
async deriveKey(password, salt = null) {
Reference Guides
Detailed implementations in the references/ directory:
Best Practices
✅ DO
- Use AES-256-GCM for symmetric encryption
- Use RSA-4096 or ECC for asymmetric encryption
- Implement proper key rotation
- Use secure key storage (HSM, KMS)
- Salt and hash passwords
- Use TLS 1.2+ for transit encryption
- Implement key derivation (PBKDF2, Argon2)
- Use authenticated encryption
❌ DON'T
- Roll your own crypto
- Store keys in code
- Use ECB mode
- Use MD5 or SHA1
- Reuse IVs/nonces
- Use weak key lengths
- Skip authentication tags