AES加密算法介绍,DES加密算法介绍,python实现AES加密算法,ython实现DES加密算法

文章介绍了DES和AES两种加密算法,强调了它们在加密后密文长度和应用场景上的区别。并提供了AES和DES在Python中使用pycryptodome库的加密与解密示例代码,展示了如何进行数据的加密和解密过程。
摘要由CSDN通过智能技术生成

1、基本介绍

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的算法。该加密算法是一种对称加密方式,其加密运算、解密运算需要
使用的是同样的密钥(一组字符串)即可。
AES和DES的区别:
加密后密文长度的不同:
DES加密后密文长度是8的整数倍
AES加密后密文长度是16的整数倍
应用场景的不同:
企业级开发使用DES足够安全
如果要求高使用AES

2、AES

AES加密的python实现
# 需要pip install pycryptodome
# 需要pip install pycrypto
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad  # pad填充不够的位数(针对要加密的数据)unpad(去除填充)
import base64
# 以下是加密步骤,是固定的
# 这里是要加密的数据
s = "我昨天喝多了"
# 1、先创建加密器
# key是密钥(字节),且长度由要求(16 (*AES-128*), 24 (*AES-192*), or 32 (*AES-256*)字节)
# mode模式:要么是ECB,要么是CBC
#             ECB:不需要给IV(偏移量)
#             CBC:需要给IV
#             IV:也是字节(一般为16字节)
aes = AES.new(key=b"abcdasdfadgsdwer", mode=AES.MODE_ECB)
# 2、加密或者解密,需要的参数是字节,且数据的长度是key的倍数
bs = s.encode("utf-8")
bs = pad(bs, 16)  # 这里填充的位数的根据key的位数决定的
r = aes.encrypt(bs)  # 加密
# aes.decrypt() #解密
print(r)  # b'v\xfalc"\x18\x8b\x9anw\x1 aM\x1at{O4\xae}?\x8a\xaeu<\xe9\x85T\xa8\xf1\xc7p\xaf'
# 网页上的操作 通常把杂乱无章的字节,处理成base64字符串,方便数据的传输
ss = base64.b64encode(r).decode()
print(ss)  # dvpsYyIYi5pudxpNGnR7TzSufT+KrnU86YVUqPHHcK8=

# 解密
# 1、先把拿到的字符串还原为字节
as1 = base64.b64decode(ss)
print(as1)
# 2、对字节进行解密操作,因为这是对称加密,所以key跟mode都要跟加密时的一样
aes1 = AES.new(key=b"abcdasdfadgsdwer", mode=AES.MODE_ECB)
s1 = aes1.decrypt(as1)
print(s1)
# 3、去除填充
s2 = unpad(s1, 16).decode("utf-8")
print(s2)

DES

DES加密的python实现
from Crypto.Cipher import DES
from Crypto.Util.Padding import pad, unpad  # pad填充不够的位数(针对要加密的数据)unpad(去除填充)
import base64
# 以下是加密步骤,是固定的
# 这里是要加密的数据
s = "我昨天喝多了"
# 1、先创建加密器
# key是密钥(字节),DES的key是8个字节,且长度由要求(16 (*AES-128*), 24 (*AES-192*), or 32 (*AES-256*)字节)
# mode模式:要么是ECB,要么是CBC
#             ECB:不需要给IV(偏移量)
#             CBC:需要给IV
#             IV:也是字节
aes = DES.new(key=b"abcdasdf", mode=DES.MODE_ECB)
# 2、加密或者解密,需要的参数是字节,且数据的长度是key的倍数
bs = s.encode("utf-8")
bs = pad(bs, 8)  # 这里填充的位数的根据key的位数决定的
r = aes.encrypt(bs)  # 加密
# aes.decrypt() #解密
print(r)  # b'v\xfalc"\x18\x8b\x9anw\x1aM\x1at{O4\xae}?\x8a\xaeu<\xe9\x85T\xa8\xf1\xc7p\xaf'
# 网页上的操作 通常把杂乱无章的字节,处理成base64字符串,方便数据的传输
ss = base64.b64encode(r).decode()
print(ss)  # dvpsYyIYi5pudxpNGnR7TzSufT+KrnU86YVUqPHHcK8=

# 解密
# 1、先把拿到的字符串还原为字节
as1 = base64.b64decode(ss)
print(as1)
# 2、对字节进行解密操作,因为这是对称加密,所以key跟mode都要跟加密时的一样
aes1 = DES.new(key=b"abcdasdfadgsdwer", mode=DES.MODE_ECB)
s1 = aes1.decrypt(as1)
print(s1)
# 3、去除填充
s2 = unpad(s1, 8).decode("utf-8")
print(s2)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Dear.爬虫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值