本文主要讲解License Generator的实现,总体设计请参考前一篇文章。
一、导出导入库
License Generator是采用QT实现的,它需要导入前面的加解密DLL。导入库的设计如下:
#ifndef AES_DLL_H
#define AES_DLL_H
#ifdef AES_IMPORT
#define AES_API extern "C" __declspec(dllexport)
#else
#define AES_API extern "C" __declspec(dllimport)
#endif
#include <string>
using std::string;
class IEncryptor
{
public:
virtual void SetKey(unsigned char * key, unsigned char * iv, int length) = 0;
// encrypt the plainText and generate a file, the plainText should be a string with '\0' end
virtual bool EncryptString2File(const char * plainText, const char * outFilename) = 0;
// decyrpt the file and output the recover, you may calculate the size of the file and allocate the space for recover
virtual bool DecryptFile2String(const char * decFilename, char * recoverText) = 0;
};
AES_API IEncryptor* CreateEncryptor();
AES_API void ReleaseEncryptor(IEncryptor* pEncryptor);
typedef IEncryptor* (*pfnCreateEncryptor)();
typedef void (*pfnReleaseEncryptor)(IEncryptor*);
#endif // AES_DLL_H
它主要包括两个导出函数,和一个接口类。这两个导出函数主要复杂管理类对象,主要功能还是在这个接口类中。
这个接口类提供了三个接口:
1)设置加解密的密匙;
2)加密字符串并生成加密文件;
3)将加密文件解密,并输出字符串;