Keepass的初次使用记录笔记

总结摘要
因V9.0管理器卡顿、无法导出,手动转换JSON至CSV后选用KeePass本地版;同步坚果云失败改用FTP,基于KeePass时间戳和条目级合并机制解决冲突,旧版本存入历史记录避免丢失。

初次使用

今天在使用网友自制分享的账号密码管理器V9.0,点卡后界面加载又卡,密码还不能复制,搜索也频出事故,所以一气之下马上更换密码管理器,但首要任务是将我的70多个密码完全取出来,这个v9.0超级落后,不能一键导出,只得我到他存储密码的json文件中去删除掉加密后的密码,将我的密码从管理器中一个一个复制出来,花了我好长时间。

然后在互联网上面找,发现其他的都会有收费的影响害怕后面还要变更,我喜欢本地能够实现全部功能那种,不是很需要特别云端,所以看了好久就看中了keepass。

keepass的pc端是https://keepass.info/,我使用的keepass生态的安卓端是https://github.com/PhilippC/keepass2android

我用的是 2.58免解压版本 ,,解压即可使用,不喜欢需要安装的,节省c盘。

解压完毕后,到官网下载 语言插件

现在的首要任务是将得到的json转换成keepass接受的csv文件,这个网络上面在线转换很多,只需要对好语法就行。

json转换成csv时候/符号是需要注意的,我就因为密码里面有这个报错了

然后下载好官网上面的例子 csv 。在里面进行选择移动,再导入到keepass就行了。

同步功能

按照网上很多人推荐坚果云同步,我也试了一下,确实很容易操作,但坚果云的同步对于我来说也是个黑匣子,我尝试了一下更改电脑上面的数据库,同步到坚果云中,再在手机进行数据库同步,并没有什么变化,不知道是同步上去出了问题,还是同步下来出了问题,毕竟是新手,所以果断放弃坚果云同步。转身投向ftp同步。

我只需要在我的电脑上面开启小p面板,开启ftp功能,然后手机在同一个局域网就能同步消息了,而账号密码也没有那么频繁的更换,所以需要同步的时候开启一下ftp同步就行了,剩下的时候手机用本地缓存。

关于keepass同步

为了搞清楚keepass在同步上面的机制,如果我手机端添加了新密码,那电脑端没有,通过ftp同步是将手机端的删除,还是合并到电脑端,像这类的问题出现有很多,就是数据库的访问一定要搞清楚。

KeePass 2.x 具有强大的内置同步机制。可以安全地合并在数据库文件的多个副本中所做的更改。

技术细节

  • 为了判断对象的哪个副本是最新的,KeePass 主要使用对象的最后修改时间(每次对象更改时 KeePass 都会自动更新)。
  • 同步在入门级执行。例如,这意味着用户名/密码的组合始终保持一致(不会实施字段级别的同步,因为组合可能会与此不一致)。
  • 在并行更新和冲突的情况下,KeePass 会尝试将所有信息存储在适当的位置。例如,当您在数据库 A 中有一个条目 E,复制 A 的 B,更改 B 中的 E,更改 A 中的 E,并同步 A 和 B,然后 A 中的 E 被视为当前,对 B 中的 E 所做的更改存储为 E 的历史条目(参见条目对话框中的“历史记录”选项卡页), 即在 B 中所做的更改不会丢失。

冲突处理机制详解

场景示例:

用户在不同副本(数据库A和B)中并行修改同一条目E:

  1. 时间线还原
    • 假设修改顺序为:A原始 → 复制到B → 修改B的E → 修改A的E → 同步A和B。
    • KeePass 比较A和B中E的修改时间,判定A的E为最新版本。
  2. 冲突解决策略
    • “最后写入获胜”(Last Write Wins):时间戳更新的条目覆盖旧版本。
    • 历史记录保留:旧版本(B中的修改)被存档至条目历史记录中(可通过条目属性查看),避免数据丢失。

总结:KeePass 的同步机制本质上是一种 基于时间戳的冲突解决策略

  1. 时间戳为基准
    • 通过 最后修改时间(Last Modified Time)判定数据的新旧状态,每次修改条目时会自动更新该时间戳。
    • 隐含假设:系统时钟需保持同步(若设备间存在时钟偏差,可能影响同步准确性)。
  2. 组合级同步
    • 同步单位为 条目级(如一个账号的用户名/密码组合),而非字段级(例如单独同步密码字段)。
    • 设计原因:避免字段级同步导致逻辑矛盾 (例如用户A修改密码,用户B修改用户名,若分开同步可能生成无效的组合)。