AES-256 与文件名加密 —— 不只是文件内容,连名字也保密
AES-256-GCM 是工业标准
AES(Advanced Encryption Standard)是美国国家标准与技术研究院选定的对称加密标准,256-bit 是它的密钥长度选项之一。Cryptomator 用的是 AES-256-GCM——GCM(Galois/Counter Mode)是一种带认证的加密模式(AEAD),能同时做到:
- 机密性:密文无法反推明文(AES 的加密层)
- 完整性:密文被篡改会被即时发现(GCM 的认证标签层)
这比"普通 AES 加密 + 单独做 HMAC"更安全、更高效,因为 GCM 自带认证标签。
Cryptomator 当前使用的 cipherCombo 是 SIV_GCM——SIV(Synthetic IV)是对初始化向量的特殊处理,目的是让相同的明文文件在加密后能产生相同的密文(对文件名加密尤其重要,见下),同时不降低安全性。

文件名加密:确定性加密模式
云盘场景里,加密文件名比加密内容更重要——因为文件内容加密了,但如果云盘还能看到你有 budget.xlsx 这个文件,它仍然能猜到你在存什么。
Cryptomator 对文件名采用确定性加密(Deterministic Encryption)——相同的明文文件名 + 相同的密钥 → 相同的密文。好处是:
- 你在解锁的保险库里搜索
budget,Cryptomator 能快速定位到对应密文文件。 - 云盘目录里出现过多次的同名文件会映射到同一个密文文件名,避免重复。
加密后的文件名会被 Base64 风格编码(字符集:字母 + 数字 + 下划线 + 星号 + 等号),然后在末尾加 .c9r 扩展名。
目录结构混淆
目录名也走同样的加密流程,而且父目录/子目录的映射关系也被打散。原本的层级关系通过内部的 dirId.c9r 和 dir.c9r 文件维持——解锁状态下由 Cryptomator 重建;密文状态下云盘只看到一堆 hash 目录名。
短名机制(Name Shortening)
部分文件系统(尤其是 Windows 的 NTFS、旧版 FAT32、某些云盘内部存储)对文件名长度有限制。Cryptomator 默认会在加密后的文件名超过 220 个字符时开始"短名"——后面的字符用 hash 替换,确保最终密文文件名不超过所在文件系统的上限。
这是 Vault Format 8 里 shorteningThreshold 字段的作用。你可以在创建保险库时的专家设置里调整它(见 加密文件名长度专家选项),但调整前务必确认目标文件系统的真实限制。
不同系统/云盘的典型文件名长度上限:
| 平台 | 文件名最大长度 | 路径总长度 |
|---|---|---|
| Windows NTFS | 255 | 260(可长路径补丁后 32,767) |
| macOS APFS | 255 | 1,015 |
| Linux ext4 | 255 | 4,096 |
| Google Drive | 32,767 | 32,767 |
| Dropbox | 255 | 无硬性限制 |
| OneDrive | 255 | 400 |
短名阈值设在 220 基本能兼容所有主流系统/云盘。调得太低会导致正常文件名也被短名,调得太高可能在某些云盘上同步失败。
一个完整的加密映射示例
解锁状态下你看到:
├─ myProject.pptx
├─ Images for Project
│ └─ ImageOfBees.jpg
└─ …
保险库目录里实际存储的是:
├─ d/
│ ├─ BZ/
│ │ └─ R4VZSS5PEF7TU3PMFIMON5GJRNBDWA/
│ │ ├─ dirId.c9r
│ │ ├─ 5TyvCyF255sRtfrIv...83ucADQ==.c9r ← myProject.pptx
│ │ └─ FHTa55bH*sUfVDbEb0gTL9hZ8nho.c9r ← 指向子目录 "Images for Project"
│ └─ FC/
│ └─ ZKZRLZUODUUYTYA4457CSBPZXB5A77/
│ └─ 4lmrQYfE_5ETusEkVJlTJrcFzjwxNBymig==.c9r ← ImageOfBees.jpg
├─ masterkey.cryptomator
└─ vault.cryptomator
没有任何一个部分能被云服务商用来推断你的文件是什么。 这正是 Cryptomator 相比"只加密内容不加密名字"的其他云盘加密方案最强的地方。
验证加密效果
想确认某个明文文件对应的密文文件是什么?用 Locate 定位加密文件。想反过来(已有密文文件名,想看清明文名)?用 Decrypt 解密文件名。