作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试加密 PDF 或可执行文件等文件,但我无法填充它。
我尝试用这种方法读取文件:
with('file', 'rb') as file_read:
line = file_read.read(n) --> n multple of 16
encrypt(line, key)
然后我将该行传递给我的 encrypt
函数,但是当我到达不是 16 的倍数的行时,我的程序崩溃了。
如何正确填充字节序列?
最佳答案
这是先前答案的简化(编辑)版本。
假设使用 line = f.read(N)
(其中 N 是 block 大小)在循环中读取文件,直到 EOF。
1) 平凡的零填充;只需在 read
之后添加:
elen = len(line) % N
if elen:
line += bytes(N - elen)
零填充是最简单的,但也有缺点。
2) PKCS#7 填充,N < 256;在 read
之后添加它并确保循环将在之后退出:
if len(line) < N:
elen = 1 + (len(line) - 1) % N
line += bytes(elen for _ in range(elen))
请注意,从文件读取与从网络套接字读取不同。需要一个缓冲区来从网络读取固定长度的 block 。
关于python-3.x - 如何在 Python 3 中填充字节序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39002878/
我是一名优秀的程序员,十分优秀!