本人为高中生,有使用手机软件记日记的习惯。
近日手机因故需要刷机,差点忘记备份数据文件,险些造成丢失。另由于该日记软件使用的是坚果云授权机制,想来对用户的隐私造成了一定的侵犯。
同时,作为一个正在学习过程中的技术爱好者,我希望自己能够对全平台的开发都有一些了解,以便在未来有需要时可以较快速上手。
出于上述的背景信息,我们构建了这个日记本项目。
在开发过程中,我们遵循便捷、安全、可靠的原则:
全端可用。我们会将你的日记内容明文存储于服务器数据库中并定期备份。用户登录账号后可获取、更新日记原文,并随时提供多样的导出选项。
全端可用。我们会将你的日记内容在客户端完成AES对称加密后(仅限 Markdown 格式的正文,不包含标题、标签等),将密文存储于服务器数据库中并定期备份。用户登录账号后可获取、更新日记密文,部分导出功能将受到客户端的限制。
仅限应用程序。与普通模式相同,但是数据将存储于本地的 SQLite 数据库中,不会被以任何形式传输。
本地还要 AES 加密才放心的你是多么缺乏安全感
仅限应用程序。与AES模式相同,但是数据将存储于本地的 SQLite 数据库中,不会被以任何形式传输。
为完成AES加密,你需要再设置一个日记密码。该密码本身不会以任何方式进行传输,但是若您使用 AES 模式,服务器会保存该密码的SHA512单向加密值,以便下次使用时在客户端验证密码正确性。
日记密码设置后不可修改,忘记后不可找回。每次使用均需输入一次日记密码(将存储于 sessionStorage 中,具体以其中数据是否存在为准)。
我们会对所有的日记正文进行 AES CBC 加密,填充方式为 PKCS7 ,密钥为日记密码的 MD5 值,IV 偏移量为日记密码的 MD5 值的 MD5 值。
(额,开发中……

前端和后端开发已经基本完成,普通模式和AES模式已经可以投入使用。
后期应该会先搞Windows应用程序,有应用程序就可以考虑本地存储模式了。
鉴于本人是一个普高学生,还有两门学科竞赛在身,最近实在抽不出太多时间用于开发。随时期待有相关经验的开发者前来合作,如果您有意向请直接与我联系。
GitHub: https://github.com/a-diary