AES-CFB8加解密【Python实现】

6 篇文章 37 订阅
1 篇文章 0 订阅

之前帮小伙伴用Python实现了AES-CFB8算法,需要自取

代码如下:

import json
from base64 import b64encode, b64decode
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes

def cfb_encrypt(data, key, iv=None):
    if iv is None:
        iv = get_random_bytes(16)
    cipher = AES.new(key, AES.MODE_CFB, iv, segment_size=8)
    ct_bytes = cipher.encrypt(data)
    ct = b64encode(ct_bytes).decode('utf-8')
    iv = b64encode(iv).decode('utf-8')
    return encrypt_data, iv
 
def cfb8_decrypt(ciphertext, iv, key):
    iv = b64decode(iv)
    ct = b64decode(ciphertext)
    cipher = AES.new(key, AES.MODE_CFB, iv, segment_size=8)
    decrypt_data = cipher.decrypt(ct)
    return decrypt_data

总结

希望可以帮助到大家。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Python 3.7中提供了AES-CFB模式的加密解密算法AES是一种对称加密算法,而CFB(Cipher Feedback)是一种分组密码模式。 要使用AES-CFB加密解密,我们首先需要安装pycryptodome库,这是一个强大且广泛使用的密码学库。可以通过以下命令安装该库: ``` pip install pycryptodomex ``` 下面是一个示例代码,演示了如何使用AES-CFB模式进行加密解密: ```python from Crypto.Cipher import AES from Crypto.Random import get_random_bytes # 随机生成16字节的密钥和初始化向量 key = get_random_bytes(16) iv = get_random_bytes(16) # 创建AES加密器和解密器 cipher = AES.new(key, AES.MODE_CFB, iv) decipher = AES.new(key, AES.MODE_CFB, iv) # 待加密的消息 message = "Hello, AES-CFB!" # 加密消息 ciphertext = cipher.encrypt(message.encode('utf-8')) # 解密密文 plaintext = decipher.decrypt(ciphertext).decode('utf-8') # 打印结果 print("密钥:", key) print("IV:", iv) print("密文:", ciphertext) print("明文:", plaintext) ``` 在这个例子中,我们首先使用`get_random_bytes()`函数生成了一个16字节的密钥和一个16字节的初始化向量。然后,我们分别使用密钥和初始化向量创建了一个AES加密器和解密器。然后,我们将待加密的消息转换为字节形式,并使用加密器对其进行加密。最后,我们使用解密器对密文进行解密,并将解密后的结果转换为字符串形式。 请注意,AES-CFB模式需要提供一个初始化向量(IV),它与密钥一起用于加密解密过程。IV的安全性非常重要,它应该是随机且不可预测的。每次加密消息时,都应该使用一个独特的IV。在这个示例中,我们使用`get_random_bytes()`函数生成了一个随机的IV。 希望这个示例对您有所帮助,让您了解如何在Python 3.7中使用AES-CFB模式进行加密解密。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

别None了

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

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

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

打赏作者

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

抵扣说明:

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

余额充值