#ifndef CONFIGENCRYPTION_H #define CONFIGENCRYPTION_H #include #include /** * @brief 配置文件加密管理类 * * 提供配置文件的加密和解密功能,保护配置数据安全 * 使用 AES-256 加密算法 */ class ConfigEncryption { public: /** * @brief 加密配置文件内容 * @param plainData 明文数据 * @param password 加密密码 * @return 加密后的数据,如果加密失败返回空 */ static QByteArray EncryptConfig(const QByteArray& plainData, const QString& password); /** * @brief 解密配置文件内容 * @param encryptedData 加密数据 * @param password 解密密码 * @return 解密后的明文数据,如果解密失败返回空 */ static QByteArray DecryptConfig(const QByteArray& encryptedData, const QString& password); /** * @brief 加密文件 * @param filePath 文件路径 * @param password 加密密码 * @return 成功返回 true,失败返回 false */ static bool EncryptFile(const QString& filePath, const QString& password); /** * @brief 解密文件 * @param filePath 文件路径 * @param password 解密密码 * @return 成功返回 true,失败返回 false */ static bool DecryptFile(const QString& filePath, const QString& password); /** * @brief 验证密码是否正确 * @param encryptedData 加密数据 * @param password 待验证密码 * @return 密码正确返回 true,否则返回 false */ static bool VerifyPassword(const QByteArray& encryptedData, const QString& password); /** * @brief 生成密钥 * @param password 用户密码 * @param salt 盐值 * @return 256位密钥 */ static QByteArray GenerateKey(const QString& password, const QByteArray& salt); /** * @brief 设置 Windows 目录权限(仅管理员可访问) * @param directoryPath 目录路径 * @return 成功返回 true,失败返回 false */ static bool SetDirectoryPermissions(const QString& directoryPath); private: // AES 加密块大小 static const int AES_BLOCK_SIZE = 16; // 盐值大小 static const int SALT_SIZE = 16; // 验证标记(用于验证密码) static const char* MAGIC_HEADER; }; #endif // CONFIGENCRYPTION_H