五种常用 Web 加密算法实战及原理详解
在现代 Web 开发中,数据安全是重中之重。无论是传输中的敏感信息还是存储的密码,选择合适的加密方案都是构建安全应用的基础。下面我们来深入探讨五种最常用的 Web 加密算法,结合原理、场景以及 Node.js 和浏览器环境下的实战代码。
1. AES (高级加密标准)
原理详解
AES 是一种对称加密算法,意味着加密和解密使用同一个密钥。它基于替代 - 置换网络 (SPN) 结构,通过多轮迭代来混淆数据。主要流程包括密钥扩展、初始轮的轮密钥加,以及主轮中的字节替换、行移位、列混淆等操作。最终轮会省略列混淆步骤。AES 支持 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.(, .(key), iv);
decrypted = decipher.(encryptedBuffer);
decrypted = .([decrypted, decipher.()]);
decrypted.();
}
key = crypto.();
iv = crypto.();
message = ;
encrypted = (message, key, iv);
.(, encrypted);
decrypted = (encrypted, key, iv);
.(, decrypted);






