[AI Development Lab] vibe coding了款加密保险库软件,密码提示真能自救
Tofloor
poster avatar
kookboy
deepin
9 hours ago
Author

今天分享一个我在Deepin 25上手搓的小工具---jiami加密保险库。

这玩意儿解决的问题很简单,就是那种你偶尔会碰到的场景:

比如工作中有几个不想让同事扫到的合同扫描件。比如电脑要送维修,但里面有身份证照片。比如某个装着你回忆录的文件夹,被家里亲戚串门时不小心点开了。

这些不是啥高级威胁,就是你走在路上鞋带松了这种级别的小事。但每次发生的时候,你只能手动改文件名,或者藏到七层目录底下,假装它不存在。

jiami做的事就是给你一个空目录,设个主密码,应用里的文件全部变成密文,没有密码连文件名都看不到。想访问的时候在应用里输密码,浏览树形目录,双击就能用系统应用打开临时解密副本。退出之后,临时文件自动清理,盘上只剩一堆乱码文件名和密文内容。

选哪个目录,设个主密码,完事。

听起来是不是跟VeraCrypt有点像?有点像,但出发点完全不一样。VeraCrypt是硬核到对抗取证实验室的,而我做这个,就是「邻居的狗可能会翻你垃圾桶」级别的防护。够用就行,不用过度设计。

从一次"差点把自己锁死"说起

某天,我突然想在Deepin机器上找一个以前放好的文件夹。知道它存在某个磁盘角落里的保险库目录里。打开jiami,输入我以为这辈子都不会忘的密码。错误。再试。错误。

脑子嗡的一下。

冷静了几秒之后,我注意到密码框下面有一行小字,写着两个字符——那是我当初设置主密码时,应用自动记录的「提示」。就是最开始的那两个字符。我在那个基础上把剩下的部分试了回来。整个过程大概15秒。

密码提示这个功能,是我第一天就想好的,也是我在里面做过的最纠结的设计决策。

逻辑上说,它就是把主密码的前两个字符明文存到了磁盘上的配置文件里。就是9个字节,1字节长度加最多8字节的UTF-8。代价是确定的:攻击者拿到这个文件就免费拿到了前两个字符。八位纯数字密码从一亿种降到一百万,降幅两个数量级。短密码、低熵字符集更危险。

但我还是决定这么做。

为什么?因为如果我把这个提示也加密起来了,那密码忘了的时候,我自己也打不开。加密了你自己也解不开,那提示干嘛用的,供着吗?

这不是安全工具里常见的「偏执模式」,这就是生活里真实的取舍。当「安全性」和「可用性」在现实压力下撞在一起的时候,大部分人选的是「别把自己锁死」。

如果你就偏好完全不泄露任何密码信息的方案——比如KeePass那种「用户自写口令提示」——那这个设计你完全可以不用。但对多数人来说,这种「头两个字符明文提示」比「密码忘了就全没了」要友善得多。

Lite级别的几个设计点

简单说几个我觉得比较有意思的设计

文件名加密这块,很多人做保险库只管内容。但文件名本身也是信息啊,「2026年体检报告.jpg」 DeepCopy最终版。7z,你看文件名就能猜个八九不离十。我的方案是对每个文件名单独加密,随机nonce,base32编码落盘。效果就是你在保险库里看到的是类似「AXQK4TAONZRWWYLJOQ====」这种东西,没有密码你连目录结构都看不出。

还有个实用的小设计:显示层分类节点是虚拟的。应用里文件按类型自动分类,文件夹单独分组,但这只是渲染层的事情。盘上的真实目录结构完全保持外部镜像,分类不会打乱真实路径。你双击分类下的文件,它能从底层磁盘的正确位置解密出来。

还有10分钟空闲自动锁定。我去倒了杯水回来,发现应用已经回到输密码界面了。挺踏实的。

vibe coding这件事本身

这篇文章的重点其实不是这个应用多厉害,加了密的保险库已经有人写了几百个了,而是这种开发模式本身的变化。

在以前,我要做这么个东西,我得先学Qt、学libsodium、学deb打包、学C++。学习曲线长到足以让我放弃「我先写一个试试」这个念头。

但现在呢,我可以坐在书桌前,跟AI说「我想在Deepin上做一个加密保险库,要DTK6风格,要Argon2id,要临时解密,要deb打包」,然后它就出来了。中间踩的那些坑——QVariant嵌套、跨线程信号——我遇到了,问AI,AI知道答案。

这种感觉就是你脑子里有个想法,不需要先花十年学会一切专业知识才能把它变成现实。你只需要知道你想做什么。

从deb包到测试通过,也就一天的时间。如果纯靠我自己,可能前三天已经在环境配置上摔键盘收尾了。

收尾

我不知道你们会拿它存什么,也不想知道。隐私的意思就是你自己知道就好。

但如果你也在用Deepin 25,也有那么几个文件不想让别人看到,也不想每次都挂在终端里敲命令的话,这个应用可能适合你。


截图_关于信息和界面.png

截图_jiami_20260721100945.png


应用下载:

jiami_0.1.0_amd64.zip

开源地址:https://gitee.com/yngeek/JiaMi

安装

若在当前文件目录以命令行方式安装,即为:sudo apt install ./jiami_0.1.0_amd64.deb

使用

  1. 启动 → 选择一个空目录 → 设主密码 → 新建保险库。
  2. 选择已有保险库目录 → 密码框下方会显示该保险库的密码提示(主密码前两个字符,明文;旧版 96 字节 cfg 无此字段则不显示)→ 输主密码 → 打开。
  3. 浏览树形目录(文件夹独立分组、文件按类型自动分类——仅显示层分组,盘上结构不变);"添加文件/添加文件夹" 增量加密入库;"添加后删除原件"勾选后入库成功并经二次确认将删除外部原文件/原文件夹;双击文件用系统程序打开临时解密副本;"取出..." 导出到磁盘;"删除" 移除条目。
  4. "锁定"(或空闲 10 分钟自动锁定)回到密码界面,临时文件自动清理。

工程结构

src/        加密核心 + 保险库管理 + UI + 工作线程 + 自动锁定
tests/      核心单元测试 (往返 / 篡改 / 错密码 / 文件名 / 文件夹)
assets/     图标 / .desktop / .qrc
scripts/    build-deb.sh
translations/ zh_CN

依赖

Deepin 25 (crimson) 源中均已就绪,若缺少,可复制下面命令执行:

sudo apt install -y cmake pkg-config \
  qt6-base-dev qt6-base-dev-tools qt6-l10n-tools qt6-tools-dev gcc g++ make \
  libdtk6core-dev libdtk6gui-dev libdtk6widget-dev libsodium-dev libssl-dev

注:

面向用户自有文件的隐私/加密保险库,正当防御性用途。不属于恶意/破坏性工具。

Reply Favorite View the author
All Replies
avatar
kookboy
deepin
9 hours ago
#1

954ea2107f916f412d5034662c19296e.png

忘了说明,该应用只支持 64 位 x86 架构(amd64,Intel/AMD 均可)的 Deepin 25。😄

我使用到的工具:智谱Zcode

模型:glm-5.2 、kimi-k3

Reply View the author
avatar
骑🐖追帅哥bot
Moderator
5 hours ago
#2

tail

Reply View the author
avatar
商店运营-小七
Moderator
4 hours ago
#3

tail

Reply View the author
avatar
字母N
deepin
2 hours ago
#4

GLM 5.2更稳,但多少有点杀鸡用牛刀,😁 dtk风格,不错,与系统更相融。

Reply View the author