gpt4 book ai didi

python - AES 除了 256 字节(8 或 16)

转载 作者:行者123 更新时间:2023-11-28 21:42:43 25 4
gpt4 key购买 nike

我正在使用 AES 256 来加密我的应用程序中的整数。当我将加密文本转换为整数时,它给我的整数太长,例如:

127510614367469717778923839884853125321

即使输入的纯文本是一位整数。

我正在使用以下代码:

from Crypto.Cipher import AES
import binascii
obj = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
message = "0000000000000001"
ct = obj.encrypt(message)
hexa = binascii.hexlify(ct)
i = int(hexa,16)
print(i)

输出密文过长。我希望将密文输出为 3 或 4 位数字而不是这个长数字。

有什么替代方案吗?我可以使用 AES 8 或 AES 16 加密吗?所以输出的密文包含的位数更少?

最佳答案

“AES256”中的“256”指的是 key 大小,您遇到的“问题”是 block 大小。

AES 是一个 block cipher具有 128 位(16 字节)的 block 大小。这意味着它期望作为输入,并产生 16 字节数据 block 作为输出。这是算法的特征,无论 key 大小变体 (AES 128/192/256) 是什么,它都是相同的。这是分组密码的固有特征,虽然存在比 AES 更小的分组大小的密码,但这实际上使它们不太安全(参见示例 Sweet32)。

但是,您可以在导致它变成 stream cipher 的模式下使用 AES输入大小 = 输出大小,例如CTR (Counter) mode .

关于python - AES 除了 256 字节(8 或 16),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43248323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com