第一次写日记是2022年国庆节后,直到今天,写下了1170余篇内容。
日记是追忆和反思很好的一个载体,我受益其中。但是今天我们不讨论日记给个人成长带来的作用, 我们探讨如何让日记更加私密,既具备电子属性的实时快捷,又能像纸质内容那样安全封存 。
自22年至今,我有1160余篇内容都是在一个商业软件上记录,前不久,我在刷酷安的时候看到了一篇帖子,讲的是这款软件明文存储日记的事。直至今日,这款软件应该也是明文存储,因为我在将原来的内容迁移到新系统的时候导出了json格式的数据,并写脚本统一导入到了新系统中,中间没有经过任何解密。
即使开发者内部有着严格的用户隐私保护权限,这依然令人感到担心。于是,我决定手搓一个加密的日记系统。由于我自己有服务器,而且是私有化自己用,所以我选用了PHP+Laravel+MySQL进行开发。
这是因为Laravel的Crypt有三个绝对优势:
1.无法暴力碰撞: AES-256 是目前银行和军事级别的加密标准。以目前的计算机算力,想要在没有密钥的情况下暴力破解出原始日记,可能需要数亿年。
2.动态加盐 (IV - 初始化向量) :即使写了两篇一模一样的日记“今天很开心”,Laravel 加密后生成的两段密文也是完全不同的。这杜绝了黑客通过密文规律推测原文的可能性。
3.必须持有密钥 :没有那串唯一的 APP_KEY,密文在任何人眼里都只是一堆毫无意义的随机字符(乱码)。
也就是说即使数据库内容泄露了,别人也无法看到。 只有服务器环境被攻破时,日记才真正面临泄露风险。 于是,基于我的使用体验和设计经验,开发了如下系统,我将其命名为 1diaryBook 并申请软件著作权,源代码在下证后开放到Github。
以下是功能介绍:
首页 ,展示日记列表时间轴,最上面显示那年今日,滑动卡片查看。只要往年的这一天写了数据都会查询出来展示到首页,每天写的时候可以回顾一下自己往年的这一天。
写日记页面 ,记录的时候会请求定位权限,获取当前位置的定位记录下来,通过位置反向获取当地天气并记录。支持快速选择当天心情。上传的图片会自动压缩存储,10M照片上传后约700KB,节约了服务器资源,提升了加载速度。
创作统计页面 ,展示第一天记录到今天的天数,写了多少篇,多少字,上传了多少图片。下面的柱状图和折线图则是展示每个月写了多少篇,多少字。之前写日记的图片我还没有迁移到这里,后面陆续补上。
情绪日历 ,展示自己每年、每月的情绪变化,是开心,激动,疲惫还是愤怒都能在这里找到答案,看自己的情绪起伏。日记日历是显示所有的日记内容,日记上传了图片就会显示缩略图在上面。支持看具体哪一年,哪一月,哪一天的日记。之前用别的软件心疼存储空间,现在自己服务器随便传,我鼓励大家多传图片,每天都传,所以设置这种UI。
阅读日记 ,该界面自动排版日记内容和图片,不同的图片数量有不同的展示策略,确保美观。界面统计字数、天气、地址等内容,可在读日记页面修改日记内容。

画廊 ,按年、月展示自己上传的图片,比文字内容更加快速的回忆起当天的事情。
地图足迹 ,还记得刚刚写日记的时候获取的位置吗,我把他的经纬度加载到了地图里并设置了一个锚点,可以在地图上看你在哪些位置记录下了文字。将这些锚点进行直线连接,组成不重合的最短路径,就计算出了你所跨越的公里数。世界之大,有待继续探索。
地图漫游 ,可以在地图上查看锚点获取当前位置的日记,如果当前位置有多个日记可以左右滑动查看具体内容。点击下一个地点将会在地图上动态滑动,展示你去过的一个又一个地方。



