密钥文件解锁 - 第二道物理锁
什么是密钥文件
密钥文件(Keyfile)是 KeePass 数据库支持的第二种解锁因子。和主密码不同,密钥文件是一个物理文件,它的文件哈希值参与解锁过程。
数据库加密密钥 = f(主密码, 密钥文件哈希, 盐值)
这意味着即使攻击者拿到了你的主密码,但没有密钥文件,也无法解锁数据库。反之亦然。

如何生成密钥文件
从 KeePassDX 4.1.0 开始,可以在应用内直接生成密钥文件:
- 打开数据库设置
- 进入"凭证"或"解锁设置"
- 找到"密钥文件"选项
- 选择"生成新密钥文件"
- 选择保存位置
生成的密钥文件是随机二进制内容,推荐使用 .bin 后缀。不要修改它的内容或文件名——任何改动都会导致哈希值不匹配,数据库打不开。
旧版本
在 4.1.0 之前的版本里,KeePassDX 不能生成密钥文件。你需要:
- 在 KeePass(Windows)或 KeePassXC(跨平台)里生成
- 或者用任何一个足够大的随机文件(比如 .iso、.dmg)直接当密钥文件用
官方文档明确指出:密钥文件可以是任意类型的文件,但推荐使用无扩展或 .bin 后缀——某些系统会自动尝试打开带扩展名的文件(比如 .exe、.html),可能导致意外行为。
密钥文件的保管
密钥文件的安全性取决于它是否和数据库文件物理隔离:
✅ 正确做法
- 把密钥文件放在单独的 U 盘里,平时拔掉不插在手机上
- 存到加密的 SD 卡分区
- 云存储里加密存放
- 让信任的家人或朋友保存一份副本
❌ 错误做法
- 密钥文件和数据库文件放在同一个文件夹里
- 密钥文件存在手机内部存储(手机丢了就全没了)
- 密钥文件和数据库文件放在同一个云同步目录
常见坑
密钥文件被 Android 处理
KeePassDX 的 Issues 里有用户报告:某些 Android 系统(特别是国产 ROM)会自动尝试打开密钥文件,或者在文件选择器里隐藏 .bin 后缀文件。
解决办法:
- 在文件管理器里手动用"打开方式"指定 KeePassDX 打开
- 或者把密钥文件先命名成其他名字,使用时再选
- 在 KeePassDX 里选择密钥文件时,用自带的文件选择器而不是系统选择器
密钥文件丢失
密钥文件丢失 = 数据库永久锁死(和主密码丢失同等严重)。所以一定要做好备份:
- 至少备份两份密钥文件
- 一份存放在物理介质(U 盘)
- 一份加密存放在云端或交给信任的人