GrabBag/AppUtils/AppCommon/Inc/ConfigEncryption.h

83 lines
2.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef CONFIGENCRYPTION_H
#define CONFIGENCRYPTION_H
#include <QString>
#include <QByteArray>
/**
* @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