AES的CFB模式加解密不一致的原因

问题:

在这里插入图片描述
如上图,AES的CFB加密方式不仅加密和解密不能使用同一个对象,就连加密的时候同一个对象都不能使用两次,否则就会如下图:

即使明文(data),密钥(key),偏移量(iv),填充(padding)都一样,那你得到的密文还是不一样。

解决办法:

目前我想到的就是将加密结果赋给一个变量,这样再次使用时就不会发生变化(我当时错误是因为我print了一次,然后又return了,导致结果不同),我也只是个才开始的小白,有知道解决办法的友友欢迎一起探讨学习。

总结:

产生这种问题的情况:

  1. 加密和解密的时候没有创建两个对象
  2. 同一个函数里同一个对象使用两次或以上

希望大家都能调试顺利!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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模式进行解密

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值