Web 开发中五种常用加密算法实战与原理
在现代 Web 开发中,数据安全至关重要。无论是传输中的敏感信息还是存储的密码,都需要合适的加密手段保护。以下梳理了五种最常用的 Web 加密算法,涵盖原理、场景及 Node.js 与浏览器环境下的实战代码。
AES (高级加密标准)
原理详解
AES 是对称加密算法,加密和解密使用相同密钥。它采用替代 - 置换网络 (SPN) 结构,主要流程包括密钥扩展、初始轮、主轮(重复 9-14 次)和最终轮。支持 128、192 和 256 位密钥长度,分别对应 10、12 和 14 轮加密。
应用场景
- HTTPS 传输中的数据加密
- 数据库敏感字段加密
- 文件加密存储
实战代码(Node.js)
在 Node.js 中,我们利用内置 crypto 模块实现 AES-256-CBC 加密。注意实际生产中 IV 需要妥善管理,不能硬编码。
const crypto = require('crypto');
// AES-256-CBC 加密
function encrypt(text, key, iv) {
const cipher = crypto.createCipheriv('aes-256-cbc', Buffer.from(key), iv);
let encrypted = cipher.update(text);
encrypted = Buffer.concat([encrypted, cipher.final()]);
return encrypted.toString('hex');
}
// AES-256-CBC 解密
function decrypt(encryptedText, key, iv) {
const encryptedBuffer = Buffer.from(encryptedText, 'hex');
const decipher = crypto.createDecipheriv('aes-256-cbc', Buffer.from(key), iv);
let decrypted = decipher.update(encryptedBuffer);
decrypted = .([decrypted, decipher.()]);
decrypted.();
}
key = crypto.();
iv = crypto.();
message = ;
encrypted = (message, key, iv);
.(, encrypted);
decrypted = (encrypted, key, iv);
.(, decrypted);


