各种常用的加解密算法

加密分类:
1 单向加密:md5,sha1  不可逆,摘要算法
2 对称加密:aes,des   可逆,加密和解密使用同一个秘钥
3 非对称加密:RSA,DSA  可逆,加密用公钥,解密用私钥
4 补充算法:base64     不是加密,只是编码

1. 对称加密

所谓对称加密就是加密和解密用的是同一个秘钥. 也称为共享密钥加密算法,是一种将明文加密成密文的加密算法。其特点是加密和解密使用相同的密钥,也就是说,密钥是公开的,双方通过协商得到同一个密钥,然后使用该密钥对明文进行加密和解密操作。
对称加密算法的优点是算法简单、加密解密速度快,适合对大量数据进行加密操作,而且加密强度较高,保密性较好。常用的对称加密算法有DES、3DES、AES、RC4等。

(1) AES

是目前最广泛应用的对称加密算法之一,其密钥长度可以是128位、192位或256位,比DES和3DES更安全可靠,而且加密解密速度较快,被广泛应用于各种领域的数据加密保护中。

加密:
"""
长度
    16: *AES-128*
    24: *AES-192*
    32: *AES-256*
MODE 加密模式. 
    常见的ECB, CBC
    ECB:是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。
    CBC:是一种循环模式,前一个分组的密文和当前分组的明文异或或操作后再加密,这样做的目的是增强破解难度。
    CFB/OFB:实际上是一种反馈模式,目的也是增强破解的难度。
    FCB和CBC的加密结果是不一样的,两者的模式不同,而且CBC会在第一个密码块运算时加入一个初始化向量。
"""
from Crypto.Cipher import AES
aes = AES.new(b"alexissbalexissb", mode=AES.MODE_CBC, IV=b"0102030405060708")
data = "我吃饭了"
data_bs = data.encode("utf-8")
# 需要加密的数据必须是16的倍数
# 填充规则: 缺少数据量的个数 * chr(缺少数据量个数)
pad_len = 16 - len(data_bs) % 16
data_bs += (pad_len * chr(pad_len)).encode("utf-8")
bs = aes.encrypt(data_bs)
print(bs)

解密:
from Crypto.Cipher import AES
aes = AES.new(b"alexissbalexissb", mode=AES.MODE_CBC, IV=b"0102030405060708")
# 密文
bs = b'\xf6z\x0f;G\xdcB,\xccl\xf9\x17qS\x93\x0e'
result = aes.decrypt(bs)  # 解密
print(result.decode("utf-8"))
(2) DES

是一种比较常见的对称加密算法,它采用64位密钥对数据进行加密,加密和解密使用相同的密钥。但是由于其密钥长度较短,易受到暴力破解等攻击方式的影响,现在已经不再安全。
3DES是在DES基础上发展而来的一种加密算法,使用三个不同的密钥对数据进行三次加密,提高了密码强度,但是加密解密速度较慢。

加密:
from Crypto.Cipher import DES
# key: 8个字节
des = DES.new(b"alexissb", mode=DES.MODE_CBC, IV&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

逐梦舞者

你的打赏是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值