Web 开发中五种核心加密算法实战与原理
数据安全是 Web 开发的基石。在实际项目中,我们常需要处理敏感信息的传输、存储和验证。今天聊聊五种最常用的加密算法:AES、RSA、SHA-256、HMAC 和 PBKDF2。我会结合原理、场景以及 Node.js 和浏览器的实战代码,带大家把这块硬骨头啃下来。
1. AES (高级加密标准)
原理详解
AES 是对称加密的标杆,加密和解密用同一个密钥。它的核心是替代 - 置换网络(SPN),流程包括密钥扩展、初始轮、主轮(SubBytes、ShiftRows、MixColumns、AddRoundKey)和最终轮。支持 128、192、256 位密钥,分别对应 10、12、14 轮运算。
应用场景
- HTTPS 传输中的数据加密
- 数据库敏感字段加密
- 文件加密存储
实战代码(Node.js)
在 Node.js 里直接用 crypto 模块。注意 CBC 模式需要初始化向量(IV),每次加密最好生成新的 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.(encryptedBuffer);
decrypted = .([decrypted, decipher.()]);
decrypted.();
}
key = crypto.();
iv = crypto.();
message = ;
encrypted = (message, key, iv);
.(, encrypted);
decrypted = (encrypted, key, iv);
.(, decrypted);


