import * as crypto from 'crypto'; const algorithm = 'aes-256-cbc'; const secretKey = crypto.scryptSync('your-secret-password', 'salt', 32); const ivLength = 16; // Encrypt function export function encryptUserId(id: string): string { const iv = crypto.randomBytes(ivLength); const cipher = crypto.createCipheriv(algorithm, secretKey, iv); let encrypted = cipher.update(id, 'utf8', 'hex'); encrypted += cipher.final('hex'); return `${iv.toString('hex')}:${encrypted}`; } // Decrypt function export function decryptUserId(encryptedId: string): string | null { try { const parts = encryptedId.split(':'); if (parts.length !== 2) { console.error('Invalid encryptedId format:', encryptedId); return null; } const iv = Buffer.from(parts[0], 'hex'); const encryptedText = Buffer.from(parts[1], 'hex'); const decipher = crypto.createDecipheriv(algorithm, secretKey, iv); let decrypted = decipher.update(encryptedText); decrypted = Buffer.concat([decrypted, decipher.final()]); return decrypted.toString('utf8'); } catch (error) { console.error('Decryption failed:', error); return null; } }