#63662·server

传统 base64 文件的加密大小错误: 在应用文件头之前读取块大小

作者: glazperle创建于 2026年8月26日更新于 2026年9月17日
标签bugfeature: encryption (server-side)0. Needs triageregression33-feedback

`lib/private/Files/Storage/Wrapper/Encryption.php` 中的 `fixUnencryptedSize()` 在调用 `begin()` 之前调用了 `getUnencryptedBlockSize()`。文件的编码(二进制或传统的 base64)只在 `begin()` 解析了头部之后才能确定,因此块大小来自模块的默认值,而不是来自文件。对于仍然以 base64 存储的文件,这会导致每个块的大小为 8096 字节而不是 6072 字节。重新计算的大小最终会比实际大 4/3,`Content-Length` 会出错,并且下载会失败。

内容来源: nextcloud/server