本人为高中生,有使用手机软件记日记的习惯。
近日手机因故需要刷机,差点忘记备份数据文件,险些造成丢失。另由于该日记软件使用的是坚果云授权机制,想来对用户的隐私造成了一定的侵犯。
同时,作为一个正在学习过程中的技术爱好者,我希望自己能够对全平台的开发都有一些了解,以便在未来有需要时可以较快速上手。
出于上述的背景信息,我们构建了这个日记本项目。
在开发过程中,我们遵循便捷、安全、可靠的原则:
- 便捷:提供多端,使用者可以轻松在多设备上,通过我们的云端或自己使用开源代码搭建的服务器来查看和撰写日记;日记使用Markdown语言,多格式兼容。
- 安全:除了云端明文存储数据内容(普通模式)外,我们还提供完善的AES模式,同时随着多端的完善还会陆续加入本地存储模式并接入更多公共云服务作为存储空间。各种存储方式具体介绍详见下方说明。
- 可靠:自建服务器配置较为简单。且对于技术能力不足的用户,也可以使用我们搭建的版本:https://diary.yixiangzhilv.com/。我们的数据库每日进行一次异地备份,备份数据存储于阿里云 Codeup 平台,网站关闭后也随时可以与我们联系取回数据。
全端可用。我们会将你的日记内容明文存储于服务器数据库中并定期备份。用户登录账号后可获取、更新日记原文,并随时提供多样的导出选项。
全端可用。我们会将你的日记内容在客户端完成AES对称加密后(仅限 Markdown 格式的正文,不包含标题、标签等),将密文存储于服务器数据库中并定期备份。用户登录账号后可获取、更新日记密文,部分导出功能将受到客户端的限制。
仅限应用程序。与普通模式相同,但是数据将存储于本地的 SQLite 数据库中,不会被以任何形式传输。
本地还要 AES 加密才放心的你是多么缺乏安全感
仅限应用程序。与AES模式相同,但是数据将存储于本地的 SQLite 数据库中,不会被以任何形式传输。
为完成AES加密,你需要再设置一个日记密码。该密码本身不会以任何方式进行传输,但是若您使用 AES 模式,服务器会保存该密码的SHA512单向加密值,以便下次使用时在客户端验证密码正确性。
日记密码设置后不可修改,忘记后不可找回。每次使用均需输入一次日记密码(将存储于 sessionStorage 中,具体以其中数据是否存在为准)。
我们会对所有的日记正文进行 AES CBC 加密,填充方式为 PKCS7 ,密钥为日记密码的 MD5 值,IV 偏移量为日记密码的 MD5 值的 MD5 值。
(额,开发中……
- 前端:Vue3 + Vite + Ant Design
- 后端:Flask + Flask-Restful + PostgreSQL(理论上支持所有的SQL数据库)
- (计划中)手机客户端 & 小程序 & 手机H5界面:uni-app + uView
- (计划中)Windows桌面应用程序:H5 + Electron,也有可能看心情直接把前端界面稍微一打包
- Mac没有设备没法测试,欢迎有人根据我 Windows 端的代码协助打包(当然愿意送我一个的话我更开心哈哈哈哈)
前端和后端开发已经基本完成,普通模式和AES模式已经可以投入使用。
后期应该会先搞Windows应用程序,有应用程序就可以考虑本地存储模式了。
鉴于本人是一个普高学生,还有两门学科竞赛在身,最近实在抽不出太多时间用于开发。随时期待有相关经验的开发者前来合作,如果您有意向请直接与我联系。
GitHub: https://github.com/a-diary