加密日记本系统
一个支持加密的个人日记管理系统,使用C++开发。
功能特点
核心功能
- ✅ 日记的创建与保存
- ✅ 日记内容加密存储
- ✅ 密码保护
- ✅ 加密日记的读取与显示
- ✅ HTML导出功能(可通过浏览器打印为PDF)
技术特性
- 基于异或算法的简单加密实现
- 面向对象的模块化设计
- 文件I/O操作
- 异常处理机制
使用方法
写日记
- 运行程序,选择 ‘y’ 写日记
- 输入日记文件名(如:mydiary.txt)
- 设置加密密码
- 依次输入:
- 系统自动加密保存
读日记
- 运行程序,选择 ‘n’ 然后 ‘y’ 读日记
- 输入要读取的日记文件名
- 输入对应的密码
- 系统自动解密并显示内容
项目结构
diary_app/
├── include/
│ ├── DiaryEntry.h # 日记条目基类
│ ├── EncryptedDiaryEntry.h # 加密日记类
│ └── HTMLExporter.h # HTML导出功能
├── src/
│ ├── DiaryEntry.cpp
│ ├── EncryptedDiaryEntry.cpp
│ ├── HTMLExporter.cpp
│ └── main.cpp
├── CMakeLists.txt
└── README.md
构建方法
mkdir build
cd build
cmake ..
cmake –build .
注意事项
密码安全
- 请妥善保管您的密码
- 密码丢失将无法恢复日记内容
- 当前使用简单异或加密,实际应用建议使用更安全的加密算法
文件管理
- 日记文件默认保存在程序运行目录
- 建议定期备份重要的日记文件
扩展方向
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| #include "../include/EncryptedDiaryEntry.h"
#include <iostream> #include <vector> #include <stdexcept>
int main() { try { std::cout << "欢迎使用日记加密系统!\n"; std::cout << "要写日记吗?(y/n)"; char choice; std::cin >> choice; if (choice == 'y') { std::cout << "请输入日记文件名:"; std::string filename; std::getline(std::cin, filename); std::cout << "请输入密码:"; std::string password; std::getline(std::cin, password);
std::cout << "请输入日记标题:"; std::string title; std::getline(std::cin, title); std::cout << "请输入日记日期:"; std::string date; std::getline(std::cin, date); std::cout << "请输入日记内容:"; std::string content; std::getline(std::cin, content); EncryptedDiaryEntry entry1(title, content, date, filename, password); entry1.save(); std::cout << "已保存加密日记。\n\n";
std::cout << "解密日记内容:\n"; entry1.display(); } else { std::cout << "要看日记吗?(y/n)"; char choice; std::cin >> choice; if (choice == 'y') { std::cout << "请输入日记文件名:"; std::string filename; std::getline(std::cin, filename); std::cout << "请输入密码:"; std::string password; std::getline(std::cin, password); EncryptedDiaryEntry entry1(filename, password); entry1.display(); } }
} catch (const std::exception& ex) { std::cerr << "错误: " << ex.what() << std::endl; return 1; } return 0; }
|