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

一、对称加密(AES与DES)

1. 前言

随着互联网的发展,越来越多的数据需要在网络中进行传输。为了保证数据的安全性,在进行网络传输时,需要对数据进行加密操作,使得数据在传输过程中不被窃取或篡改。AES(Advanced Encryption Standard)就是一种经典的加密算法。

AES 算法源于比利时密码学家 Joan Daemen 和 Vincent Rijmen,它是一种对称加密算法通过使用相同的密钥对数据进行加密和解密操作。AES 算法中,加密和解密操作是相反的过程,因此需要使用相同的密钥作为加密和解密的关键参数。

AES 算法使用分组密码体制,将明文按照固定大小进行分组,然后对每一分组进行加密。在加密过程中,AES 算法采用了多轮加密的方式,每一轮加密都包含了四种操作:SubBytes、ShiftRows、MixColumns 和 AddRoundKey。通过这些操作,AES 算法可以更加安全高效地对数据进行加密。

AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个。

2. 安装

pip install pycryptodome

AES 加密最常用的模式就是 ECB模式 CBC模式,当然还有很多其它模式,他们都属于AES加密。ECB模式CBC模式俩者区别就是 ECB 不需要 iv偏移量,而CBC需要

"""
# 参数	作用及数据类型

1. 秘钥 :加密的时候用秘钥,解密的时候需要同样的秘钥才能解出来; 数据类型为bytes
2. 明文 :需要加密的参数; 数据类型为bytes
3. 模式 :aes 加密常用的有 ECB 和 CBC 模式(为主)(我只用了这两个模式,还有其他模式);数据类型为aes类内部的枚举量
iv 偏移量 :这个参数在 ECB 模式下不需要,在 CBC 模式下需要;数据类型为bytes

AES - CBC - 128 用得最多
长度
    16: *AES-128*  
    24: *AES-192*
    32: *AES-256*
    
MODE 加密模式: 
    常见的ECB, CBC
    ECB:是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。
    CBC:是一种循环模式,前一个分组的密文和当前分组的明文异或或操作后再加密,这样做的目的是增强破解难度。
"""

3. CBC加密

先加密 - 编码 - 解码 - 解密

from Crypto.Cipher import AES
import base64

# AES-128模式:key:16;  iv:16位; 明文:是16的倍数;
# 明文
data = "Alex is ugly!"  # 需要加密的内容
data = '{"name":"alex","msg":"ugly"}'
print(len(data))  # 13 位
while len(data) % 16 != 0:  # 如果data不足16位的倍数就用空格补足为16位
    data += "\0"
print(data, len(data))  # Alex is ugly!    16位

# 密钥
key = "1234567890123456".encode()  # 保证16位数
# 偏移量
iv = "aaaabbbbccccdddd".encode()  # 偏移量--必须16字节

# (1) 加密
# 创建一个aes对象
aes = AES.new(key, AES
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

My.ICBM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值