加密文件名长度专家选项 —— 短名机制与 220 阈值怎么调
为什么要有"短名"
Cryptomator 加密后的文件名一般长这样:
5TyvCyF255sRtfrIv...83ucADQ==.c9r
这串字符是固定长度的 Base64 类编码(对确定性加密来说),加上 .c9r 后缀,总长度大约 100 多字符。问题是路径里可能有多层目录,每一层的密文文件名(实际上是 hash 目录名)都占长度。当明文文件名本身也很长时(比如 200+ 字符的长文件名 + 多层目录),加密后的完整路径可能超出某些文件系统的上限。
这时候 Cryptomator 会自动触发短名机制——把密文文件名在第 N 个字符处截断,后面替换成固定长度的 hash:
// 加密后但未短名:
这是一个非常非常非常长的...文件名.doc → (完整密文文件名,可能 200+ 字符)
// 短名后(默认在第 220 个字符处触发):
// 前 220 字符保留加密结果,后面用 32 字符的 hash 替换
这样就能保证整个密文文件名 ≤ 文件系统限制。
220 阈值是怎么来的
Vault Format 8 里 shorteningThreshold = 220 这个默认值是综合了主流文件系统的限制定的:
| 文件系统/云盘 | 单文件名最大长度 | 短名阈值 220 够不够 |
|---|---|---|
| Windows NTFS | 255 | ✅ |
| macOS APFS | 255 | ✅ |
| Linux ext4 | 255 | ✅ |
| Google Drive | 32,767 | ✅ 远小于 |
| Dropbox | 255 | ✅ |
| OneDrive | 255 | ✅ |
| exFAT | 255 | ✅ |
220 比 255 留了 35 字符的安全余量,防止极端情况(比如密文文件名带冲突后缀 .c9r 后再短名)。
哪些场景需要手动调
以下情况可以考虑手动调整阈值:
- 保险库要同步到一个对文件名特别敏感的平台(比如某些企业内网文件共享服务)
- 你大量使用超长风帆名(200+ 字符),希望完全保留加密后长度(可以调高阈值)
- 遇到某些边缘文件系统同步报错(可以调低阈值)
调整步骤
在创建向导的 Expert Settings 步骤打开 Enable Expert Settings 开关,然后在 Maximum Length of Encrypted File Names 里填一个新值。调整后创建的保险库会使用新阈值。
已经创建的保险库无法事后修改阈值——如果你想改,只能新建保险库然后把数据搬过去。
调完之后
调完阈值之后,建议:
- 在保险库里创建一个加密后路径长度刚好超过阈值的测试文件(比如用一个 200 字符长的明文文件名 + 多层目录)
- 解锁保险库确认能看到
- 关闭 Cryptomator 让云盘同步完成
- 换另一台设备打开同一个保险库,确认能看到刚才那个文件
调整阈值如果导致短名行为不当,最常见的后果就是某些文件名在跨设备解锁时找不到。所以调整前务必充分测试。
大多数人不需要碰这个
220 这个默认值对 99% 的用户和 99% 的云盘场景来说都完美兼容。如果你不确定自己需不需要改,就别改。