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

嵌入式算法6---AES加密/解密算法 AES对称加密算法介绍及源码实现 阅读详情

一、对称加密介绍

AES属于对称加密算法,不知道什么是对称加密的小伙伴请看这篇文章:https://blog.youkuaiyun.com/thy525/article/details/147700959

二、AES加密算法简介

AES(Advanced Encryption Standard,高级加密标准)是由美国国家标准与技术研究院(NIST)于2001年发布的对称加密算法,旨在替代老旧的DES标准。

相关参数定义:

  • 密钥(Key):密钥即加密和解密所使用的密码。在AES-128中,密钥长度为128位。若提供的密钥位数不足,部分加密库会自动将其填充至128位。
  • 密钥位数(Key Length):AES算法支持三种不同的密钥长度,密钥为128位(16字节)的AES-128、密钥为192位(24字节)的AES-192、密钥为256位(32字节)的AES-256。密钥长度越长,加密的安全性通常也越高。
  • 初始向量(IV - Initialization Vector):初始向量在加密过程中起着重要作用。不同的初始向量会使相同明文加密后的密文不同。在加密和解密操作时,必须使用相同的初始向量,以确保正确解密。
  • 加密模式(Mode):AES算法包含多种加密模式,如ECB(电子密码本模式)、CBC(密码分组链接模式)、CFB(密码反馈模式)等。其中,ECB模式由于未使用初始向量,安全性相对较低;而其他模式之间的差异并不十分显著。
  • 填充方式(Padding):在加密和解密过程中,两端必须使用相同的填充模式。常见的填充模式有PKCS5、PKCS7和NOPADDING等。

三、AES加密的原理

AES加密算法采用分组密码体制,每个分组数据的长度为128位16个字节,密钥长度可以是128位16个字节、192位或256位,一共有四种加密模式,通常采用需要初始向量IV的CBC模式,初始向量的长度也是128位16个字节。


四、快速识别AES加密的方法

4.1 密文长度判断

基础长度:密文长度是 16 字节分组的整数倍经 Base64 编码后的结果。由于 Base64 编码会将每 3 个字节转换为 4 个字符,所以密文长度通常是 4 的倍数。

填充影响:PKCS#7填充会增加1-16字节

示例分析:

明文(15字节) → 加密后16字节
明文(16字节) → 加密后32字节(含16字节填充)

4.2 验证密文字符集

密文是 Base64 编码的字符串,由字符 A - Z、a - z、0 - 9、+、/ 和 = 组成(用于填充)。

4.3 代码特征识别

CryptoJS.AES.encrypt(text, key, { iv: iv });

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


五、实现AES加密解密

5.1 JavaScript实现AES加密解密

使用CryptoJS库实现AES加密解密,运算模式CBC,填充方式PKCS#7:

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 = '123456'; // 明文

const keyHex = CryptoJS.enc.Utf8.parse('1234567890123456'); // 密钥长度为 16 字节(128 位)
const ivHex = CryptoJS.enc.Utf8.parse('abcdefghijklmnop'); // 初始向量长度为 16 字节(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 加密后密文:  8J9Je8e093V8Jiu+ily0yQ==
AES 加密后密文长度:  24
AES 解密后:  123456

5.2 Python实现AES加密解密

使用pycryptodome库实现CBC模式的AES加密解密:

from Cryptodome.Cipher import AES
from Cryptodome.Util.Padding import pad, unpad
import base64


# AES加密函数(CBC模式,PKCS7填充)
def aes_encrypt(plain_text, key, iv):
    cipher = AES.new(key=key, mode=AES.MODE_CBC, iv=iv)
    padded_text = pad(plain_text.encode('utf-8'), AES.block_size)  # PKCS7填充
    cipher_text = cipher.encrypt(padded_text)
    return base64.b64encode(cipher_text).decode('utf-8')  # 返回Base64编码的密文


# AES解密函数(CBC模式,PKCS7填充)
def aes_decrypt(cipher_text, key, iv):
    cipher = AES.new(key=key, mode=AES.MODE_CBC, iv=iv)
    decrypted_padded = cipher.decrypt(base64.b64decode(cipher_text))
    decrypted_text = unpad(decrypted_padded, AES.block_size).decode('utf-8')
    return decrypted_text


# 测试代码
plain_text = '123456'  # 明文
key = '1234567890123456'.encode('utf-8')  # 16字节密钥(128位)
iv = 'abcdefghijklmnop'.encode('utf-8')  # 16字节IV(128位)

# 加密
encrypted = aes_encrypt(plain_text, key, iv)
print('AES 加密后密文:', encrypted)
print('AES 加密后密文长度:', len(encrypted))

# 解密
decrypted = aes_decrypt(encrypted, key, iv)
print('AES 解密后:', decrypted)

运行结果:

AES 加密后密文: 8J9Je8e093V8Jiu+ily0yQ==
AES 加密后密文长度: 24
AES 解密后: 123456
Aes算法随机生成秘钥Key和随机生成偏移量Iv的java例子 Aes算法利用java实现,包含随机生成的key和iv 阅读详情

相关推荐

爬虫JS逆向实战:AES加密原理与JavaScript实现详解

AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,采用分组加密策略。在Web逆向工程中,AES常见于接口参数加密、敏感数据保护等场景。

weixin_65387849的博客 2097

AES加密解密算法

AES属于分组加密,算法明文长度固定为128位(单位是比特bit,1bit就是1位,128位等于16字节)而密钥长度可以是128、192、256位当密钥为128位时,需要循环10轮完成加密,在此基础上,密钥每增加64位,就要多循环2轮(即192位密钥循环12轮,256位密钥循环14轮)

这个博主不懒,但Ta什么也没写~(私信互关24小时必回) 2万+

【JS逆向】【15.编码算法】对称加密(AES与DES),非对称加密(RSA)(详细笔记)

一、对称加密(AES与DES) 1. 前言 2. 安装 3. CBC加密 4. CBC解密 二、非对称加密(RSA) 1. 公钥和密钥 2. 生成公私钥 3. 公私钥加密和解密 加密 解密

weixin_43612602的博客 3606

AES 加密 key iv

AES(Advanced Encryption Standard)加密是一种广泛使用的对称加密算法,它使用相同的密钥进行加密和解密操作。在AES加密中,和,Initialization Vector)是两个重要的组成部分。

王小工小工历程 1万+

爬虫学习——25.JS逆向(1)

JS:JS全称JavaScript 是互联网上最流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。JavaScript 是一种轻量级的编程语言。JavaScript 是可插入 HTML 页面的编程代码。JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。JS反爬:JS反爬是指爬虫在获取网页数据时,遇到了通过JavaScript代码实现的反爬措施。JS反爬技术的实现方式包括动态渲染、异步加载、验证码、IP限制等多种方式。

weixin_66370632的博客 1563

AES加密后的密码可以破解吗

如果密钥管理不当(例如,密钥泄露或被猜测到),或者加密实现存在漏洞,则加密的数据可能会被破解。它被认为是非常安全的,到目前为止,没有已知的可行方法能够有效破解使用AES加密的数据,前提是实现得当且密钥保密性得到妥善管理。破解AES加密理论上是可能的,比如通过蛮力攻击(尝试所有可能的密钥组合),但是给定足够长的密钥,这种攻击方式在实际中是不可行的。综上所述,虽然理论上AES加密是非常安全的,但在实际应用中,加密系统的安全性取决于多种因素,包括密钥管理、加密算法的实现、系统的整体安全架构等。

舒一笑的博客 5658

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

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

thy525的博客 2996

爬虫逆向:一文掌握逆向中的加密与解密(代码可直接拿来用)

在现代网络爬虫开发中,目标网站为了防止数据被轻易抓取,通常会对传输的数据进行加密处理。这些加密手段包括但不限于 Base64 编码、对称加密(如 AES)、非对称加密(如 RSA)、自定义混淆算法等。理解和破解这些加密解密算法是爬虫逆向工程中的重要环节。有些网站使用自定义的加密算法,需要通过逆向分析找到加密逻辑。案例:逆向自定义加密使用浏览器开发者工具(F12)调试 JavaScript 代码。找到加密函数,分析其逻辑。使用 Python 实现相同的逻辑。# 示例:自定义 XOR 加密。

数据知道的博客 2万+

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

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

thy525的博客 3212

AES加密解密基本原理讲解 - 实战:爬取有AES加密的接口

AES加密解密基本原理讲解-实战:爬取有AES加密的接口

孤寒者的博客 1万+

基于Kubernetes的ML平台架构设计

本文在Kubernetes开源组件的基础上,对ML平台各部分组件的作用进行了介绍,并且进行了组件选型,初步设计了ML平台的技术架构。

2401_83124266的博客 2052

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

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

thy525的博客 2368

接口操作MySQL跟MongoDB事务回滚问题

通常使用的事务注解:@Transactional 是不会对MongoDB生效的,但是在一些生产接口中无法避免同时使用MySQL跟MongoDB的操作。

weixin_45932023的博客 1579

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

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

thy525的博客 1461

【RL+空战】学习记录01:jsbsim 仿真环境初次学习,F16 战机起飞

【代码】【RL+空战】学习记录01:jsbsim 仿真环境初次学习,F16 战机起飞。

weixin_41369892的博客 904

SAP License:SAP会计凭证抬头的字段状态控制

FI模块的同事一般都知道在FI中有个字段状态变式,可以控制在凭证输入时哪些字段是必输、哪些可选哪些隐藏,但这只对凭证行项目中有效,你是否想过对于凭证抬头的字段是哪控制呢? 在中国,会计附件上都要带一个附件张数字段,但SAP的默认配置中没有这一字段,并非SAP没有设置此字段,而是我们没有配置这一字段。如果需要在凭证输入时放出分支号(BRNCH)、附件页数(NUMPG)等字段,在个人参数文件中加入参数CSF,参数值AR,即可。如下图: 实际上,这是对凭证国家的一个设置,在SAP中,配置了AR这个国家..

SAP权限管控|SAP用户权限管理|SAP权限合规检查|SAP全日志管理 2226

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

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

thy525的博客 1207

基于STM32与FPGA Cyclone IV的FSMC高速数据通信实战解析

本文详细解析了基于STM32的FSMC接口与FPGA Cyclone IV实现高速并行数据通信的实战方案。通过将FPGA模拟为SRAM设备,构建了MCU与FPGA之间的高速数据通道,并深入探讨了硬件连接、STM32软件配置、FPGA逻辑设计及性能优化等关键步骤,为图像处理、高速采集等需要大数据量交换的嵌入式应用提供了稳定高效的通信解决方案。

swift5iosmith的博客 295

爬虫逆向加密技术详解之对称加密算法:原理、过程与关键技术详解

爬虫逆向加密技术详解之对称加密算法:原理、过程与关键技术详解

thy525的博客 2020

流体动力学仿真软件:Star-CCM+_(19).软件定制与脚本编写

自定义插件开发可以扩展Star-CCM+的功能,实现特定的仿真需求。插件开发通常需要使用Java语言,并且需要对Star-CCM+的API有深入的了解。以下是一个简单的Java插件示例,展示如何创建一个自定义插件来显示仿真项目的信息。// 导入必要的Star-CCM+ API import star . ccm . product . CCMProject;// 自定义插件类 public class CustomPlugin {// 插件主方法 public void run() {

kkchenjj的博客 938

WinCC7.5 SP2 安装与授权(文末附授权软件)

安装部分参考了wincc7.5官网下载及安装配置(适配window10超详细教程) 主要介绍授权部分(仅供学习,商用请下载正版授权): 通过官网下载安装了WinCC7.5(需要在西门子官网注册账户,10积分下载)。 安装成功以后,还没授权,先别立即打开。 下载Sim_EBK_Install 复制链接到百度网盘中离线下载: 都是一样的软件,版本不同。有部分解压时需要输入密码,可选择方框里的不需要解压密码: 解压以后,打开: 最后检查秘钥授权是否成功 打开桌面(这是安装WinCC以后就有的): 左

skr? 7万+

爬虫-逆向加密算法使用手册

MD5是一个非常常见的摘要(hash)逻辑. 其特点就是小巧. 速度快. 极难被破解. 所以, md5依然是国内非常多的互联网公司选择的密码摘要# obj.update("alex".encode('utf-8')) # 可以添加多个被加密的内容print(bs)我们把密文丢到一些网页里. 发现有些网站可以直接解密. 但其实不然. 这里并不是直接解密MD5. 而是"撞库". 就是它网站里存储了大量的MD5的值.如何避免撞库: md5在进行计算的时候可以加盐. 加盐之后. 就很难撞库了.

weixin_44201223的博客 2136

在 SAP S/4HANA 的 BP 事务里做保存前校验:BDT 事件、BUPA_FURTHER_CHECKS 与 CVI 扩展 BAdI 一次讲透

SAP BP事务保存前校验机制解析 摘要:本文系统梳理了SAP BP事务保存前的校验机制,揭示了三种关键校验点的差异与适用场景: BDT框架DCHCK事件:最靠近UI层,适合屏幕字段级校验,但API调用时可能失效 Classic BAdI BUPA_FURTHER_CHECKS:全局拦截点,可阻断整个BP保存,适合核心业务规则 CVI扩展校验:仅管控供应商/客户段落,需注意可能产生"BP已保存但段落未保存"的情况 文章通过真实案例(如黑名单校验、付款冻结等)展示了各校验点的最佳实践,并特

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 312

十七:爬虫-JS逆向(上)

JS逆向是指通过分析和破解JavaScript代码,获取反爬措施的规则和实现方式,从而绕过反爬措施,实现爬虫的抓取。JS逆向需要具备一定的`JavaScript`编程能力和代码分析能力,对于爬虫开发者来说是一项高级的技能

qiao_yue的博客 4680

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

爬虫逆向爬虫遇到的常见加密算法 整理(安卓逆向 js逆向) 持续更新

取盐 算法,消息摘要算法,是对数据进行一系列运算后,截取一部分关键值进行校验。因此运算过程不可逆,无法还原出加密前的 初始文本。消息摘要算法得到的结果长度一般是固定的,无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。一般地,只要输入的文本不同,对其进行摘要以后产生的摘要消息也必不相同,但相同的文本输入必会产生相同的输出。

weixin_44236034的博客 1197

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【爬虫知识】爬虫常见加密解密算法

简介 本文总结了在爬虫中常见的各种加密算法、编码算法的原理、在 JavaScript 中和 Python 中的基本实现方法,遇到 JS 加密的时候可以快速还原加密过程,有的网站在加密的过程中可能还经过了其他处理,但是大致的方法是一样的。 常见加密算法: 对称加密(加密解密密钥相同):DES、3DES、AES、RC4、Rabbit 非对称加密(区分公钥和私钥):RSA、DSA、ECC 消息摘要算法/签名算法:MD5、SHA、HMAC、PBKDF2 常见编码算法:Base64 JavaScript 加密解密

K哥爬虫 5860

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 爬虫逆向加密技术详解之对称加密算法:原理、过程与关键技术详解
下一篇: 爬虫逆向加密技术详解之对称加密算法:DES加密解密
满载一船星河
博客等级 码龄5年 286粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值