爬虫逆向加密技术详解之对称加密算法:AES加密

详细介绍:

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 - Za - z0 - 9+/= 组成(用于填充)。

一眼区分方法:

仅从密文本身较难一眼区分,但如果密文是 Base64 编码,且长度符合 16 字节分组加密后 Base64 编码的规律(如 24、32、44 等),结合使用的加密库和已知的 AES 密钥长度、分组模式等信息,可推测为 AES 加密结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值