当前位置:首页 > 编程笔记 > 正文
已解决

关于AES加密输出密文不为128位的倍数的原因

来自网友在路上 176876提问 提问时间:2023-10-23 20:37:15阅读次数: 76

最佳答案 问答题库768位专家为你答疑解惑

今天尝试用AES-256-OFB加密一个flag结果输出的密文是43字节,不是128位(16字节)的倍数,代码如下:

import os
from Crypto.Cipher import AES
data=b'flag{a7ba7128-3917-4551-8260-b3499e9dd7b12}'
aes = AES.new(os.urandom(32), AES.MODE_OFB, os.urandom(16))
aes.encrypt(data)

结果输出是一串ee9b074ed941942a965e966de91590af1e32b2c1cccde61efb5295374c807e49ab275456b9b937a6576680

并不是16字节的倍数,百思不得其解,后来网上查了下OFB的工作模式:
在这里插入图片描述
在这里插入图片描述
可以看到,他加密解密的时候用的是异或加密块输出的办法,这样就能够将块密文(Block Cipher)转换为流密文。输入的明文大小就不用固定了,不然还得使用PKCS7padding算法填充。因此密文的大小也不用固定。

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"关于AES加密输出密文不为128位的倍数的原因":http://eshow365.cn/6-22698-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!