【问题标题】:cryptography.exceptions.AlreadyFinalized: Context was already finalizedcryptography.exceptions.AlreadyFinalized:上下文已经完成
【发布时间】:2020-01-11 20:04:09
【问题描述】:

我有一个二进制文件,其中包含一些多行数据,其中每行在写入之前都经过加密。现在我试图一次读取一行,然后在循环下解密它,但我得到了错误提示

cryptography.exceptions.AlreadyFinalized:上下文已经完成。

我的示例代码如下:

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives import padding
from cryptography.hazmat.backends import default_backend

key =  #32 bit long key
iv = #16 bit long
cipher = Cipher(algorithms.AES(key),modes.CBC(iv),backend = default_backend())
decryptor = cipher.decryptor()
database = open("entry.txt",'rb')
for line in database:
    line = line.split(b"  ")
    line = line[0]
    line = (decryptor.update(line) + decryptor.finalize()).decode("UTF-8")
    line = (line.split("-~-"))[1]
    print(line)

为了更好的说明entry.txt中解密状态的数据

1-~-{'位置': '1', '天气': '1', '时间': '00:58', '数据': '1'}-~-##### ######################

2-~-{'位置': '2', '数据': '2', '时间': '00:58', '天气': '2'}-~-##### ######################

提前致谢

PS:无法附加加密数据,因为它是二进制格式

【问题讨论】:

    标签: python cryptography


    【解决方案1】:

    将 padder 从 128 位更新到 256 位后,我的代码可以正常工作:

    padder = padding.PKCS7(128).padder()  # wasn't working
    
    padder = padding.PKCS7(256).padder()  # working
    

    我注意到您导入了填充,但没有共享代码,所以我假设您使用 padding example from here 用于使用 HMAC 的 AES CBC(所有“上下文已完成。”相关错误来自 @ 987654322@) 和encryptor from here

    在添加示例明文时,我在以下行也遇到了同样的错误:

    padded_data = padder.update(b"{'location': '2', 'data': '2', 'time': '00:58', 'weather': '2'}")
    
    cryptography.exceptions.AlreadyFinalized: Context was already finalized.
    

    我没有测试从文件部分读取,但假设它遇到了同样的问题。

    Padding doesn't add security,您最好使用不同的模式。

    p.s.1 key 是 32 字节长,iv 是 16 字节长。

    p.s.2 希望您阅读危险品模块的描述 :)

    这是一个“有害物质”模块。仅当您 100% 确定自己知道自己在做什么时才应该使用它,因为这个模块充满了地雷、龙和带有激光枪的恐龙。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 2018-08-13
      • 2018-08-03
      • 1970-01-01
      • 2010-11-05
      相关资源
      最近更新 更多