详细介绍:
AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,由美国国家标准与技术研究院(NIST)于 2001 年发布。它支持 128 位、192 位和 256 位的密钥长度,分组长度固定为 128 位(16 字节)。AES 具有高效、安全等特点,被广泛应用于各种领域,如网络通信、数据存储等。
实现案例:
const CryptoJS = require('crypto-js');
// AES 加密函数,使用 CBC 模式和偏移量
function aesEncrypt(plainText, keyHex, ivHex) {
const encrypted = CryptoJS.AES.encrypt(plainText, keyHex, {
iv: ivHex,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.ciphertext.toString(CryptoJS.enc.Base64);
}
// AES 解密函数,使用 CBC 模式和偏移量
function aesDecrypt(cipherText, keyHex, ivHex) {
const decrypted = CryptoJS.AES.decrypt(cipherText, keyHex, {
iv: ivHex,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
}
const plainText = 'Hello, World!'; // 明文
const keyHex = CryptoJS.enc.Utf8.parse('1234567890123456'); // 128 位密钥
const ivHex = CryptoJS.enc.Utf8.parse('abcdefghijklmnop'); // 128 位偏移量
// 加密
const encrypted = aesEncrypt(plainText, keyHex, ivHex);
console.log('AES 加密后密文: ', encrypted);
console.log('AES 加密后密文长度: ', encrypted.length);
//解密
const decrypted = aesDecrypt(encrypted, keyHex, ivHex);
console.log('AES 解密后: ', decrypted);
结果示例:
AES 加密后密文: 6w3H+IlXnYwkWRPm6hOUIA==
AES 加密后密文长度: 24
AES 解密后: Hello, World!
密文特点:
- 长度:密文长度是 16 字节分组的整数倍经 Base64 编码后的结果。由于 Base64 编码会将每 3 个字节转换为 4 个字符,所以密文长度通常是 4 的倍数。
- 字符串组成:密文是 Base64 编码的字符串,由字符
A - Z
、a - z
、0 - 9
、+
、/
和=
组成(用于填充)。
一眼区分方法:
仅从密文本身较难一眼区分,但如果密文是 Base64 编码,且长度符合 16 字节分组加密后 Base64 编码的规律(如 24、32、44 等),结合使用的加密库和已知的 AES 密钥长度、分组模式等信息,可推测为 AES 加密结果。