JSON是一種常用的數據交換格式,很多時候我們需要通過網絡傳輸敏感數據,為了避免信息泄露,我們需要對響應的數據進行加密。
// 加密前的JSON數據 { "username": "john", "password": "123456" }
常用的加密方式有對稱加密和非對稱加密。下面將分別介紹如何對JSON數據進行對稱加密和非對稱加密。
對稱加密
對稱加密使用相同的密鑰對數據進行加密和解密,常用的對稱加密算法有DES、AES等。
// 對稱加密示例代碼 import crypto from 'crypto'; const algorithm = 'aes-256-cbc'; const key = crypto.randomBytes(32); // 生成32字節的隨機密鑰 const iv = crypto.randomBytes(16); // 生成16字節的隨機向量 // 加密 const cipher = crypto.createCipheriv(algorithm, key, iv); let encrypted = cipher.update(JSON.stringify(data), 'utf8', 'hex'); encrypted += cipher.final('hex'); // 解密 const decipher = crypto.createDecipheriv(algorithm, key, iv); let decrypted = decipher.update(encrypted, 'hex', 'utf8'); decrypted += decipher.final('utf8');
非對稱加密
非對稱加密使用公鑰加密數據,私鑰解密數據,常用的非對稱加密算法有RSA等。
// 非對稱加密示例代碼 import crypto from 'crypto'; // 生成密鑰對 const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', { modulusLength: 2048 }); // 加密 const encrypted = crypto.publicEncrypt(publicKey, Buffer.from(JSON.stringify(data))); const ciphertext = encrypted.toString('base64'); // 解密 const decrypted = crypto.privateDecrypt(privateKey, encrypted).toString();
通過對響應的數據進行加密,可以有效保障敏感信息的安全性,防止信息泄露。