You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.4 KiB
C++
48 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include "zxAes.h"
|
|
|
|
// AES算法外调函数类
|
|
class I_ALGENC_EXPORT zxEncryptAES
|
|
{
|
|
|
|
public:
|
|
|
|
zxEncryptAES();
|
|
~zxEncryptAES();
|
|
|
|
/// @brief 加密解密部分
|
|
|
|
// 把文件 加密 或 解密 为文件
|
|
// 注意:该函数不做文件是否同一个文件的判断,请自行处理
|
|
bool encryptFile2File(QString sFileSrc, QString sFileDest);
|
|
bool decryptFile2File(QString sFileSrc, QString sFileDest);
|
|
|
|
// 把文件 加密 或 解密 为QByteArray
|
|
bool encryptFile2Ba(QString sFileSrc, QByteArray& ba);
|
|
bool decryptFile2Ba(QString sFileSrc, QByteArray& ba);
|
|
|
|
// 把 String 或 解密 为 String
|
|
bool encryptStr2Str(QString s1, QString& s2);
|
|
bool decryptStr2Str(QString s1, QString& s2);
|
|
|
|
// 把文件 QByteArray 或 解密 为QByteArray
|
|
bool encryptBa2Ba(QByteArray ba1, QByteArray& ba2);
|
|
bool decryptBa2Ba(QByteArray ba1, QByteArray& ba2);
|
|
|
|
private:
|
|
|
|
// 内部实现函数
|
|
void _initPrivateKey(DWORD nKeySize, UCHAR *pKeyBytes); //AES 密钥初始化
|
|
DWORD _aesEnc(LPVOID bufferIns, DWORD nLen, LPVOID bufferOuts); //AES 加密数据
|
|
DWORD _aesDec(LPVOID bufferIns, DWORD nLen, LPVOID bufferOuts); //AES 解密数据
|
|
bool _encDecBa(QByteArray& baInput, QByteArray& baOutput, bool bEncMode);
|
|
|
|
// 存为文件,内部使用
|
|
bool _saveBa2File(QByteArray& ba, QString sFileDest);
|
|
|
|
private:
|
|
|
|
zxAes* m_pAes;
|
|
};
|