小编Pi-*_*urn的帖子

AES-CTR & AES-GCM 生成的不同密文

为了验证我对 AES-GCM 和 AES-CTR 模式的理解,我使用 python Crpyto.Cipher 库创建了一个简单的示例。我期望从两种模式都使用 CTR 方法生成相同的密文。

由于我的目的只是比较来自加密引擎的加密结果,因此,我将 GCM 和 CTR 的消息设置为全 0(十六进制格式)。任何与 0 的异或都将保留为原始密文。

在 AES-CTR 方面,我将 nonce 设置为“00”。这意味着不会使用随机数,并且默认情况下计数器编号将从值 0 开始。

在 AES-GCM 方面,我将随机数 (IV) 设置为 16 字节“00”。我假设这相当于计数器的 0 起始值。

看看下面的 AES-GCM 框图,我应该从 AES-GCM 得到的第一个密文应该只是计数器值 1 的加密结果。

但是,我无法从 AES-CTR 和 AES-GCM 获得相同的加密结果。请赐教我是哪个部分出错了?最后,我对两种加密模式使用相同的 256-AES 密钥。

在此处输入图片说明

这是代码:

key  = bytes.fromhex('0123456789ABCDEF11113333555577770123456789ABCDEF1111333355557777')
msg  = bytes.fromhex('00000000000000000000000000000000')
msg1 = bytes.fromhex('00000000000000000000000000000001')

###### AES-256 ECB Mode ######
aes1 = AES.new(key,AES.MODE_ECB)
print("AES-ECB Result, Counter 1: "+str(binascii.hexlify(aes1.encrypt(msg1)))+"\n")

###### AES-256 CTR Mode ######
aes1 = AES.new(key,AES.MODE_CTR,nonce=bytes.fromhex('00'))
print("AES-CTR …
Run Code Online (Sandbox Code Playgroud)

cryptography aes python-3.x aes-gcm

3
推荐指数
1
解决办法
363
查看次数

标签 统计

aes ×1

aes-gcm ×1

cryptography ×1

python-3.x ×1