⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 izencrypt.txt

📁 IDEA加密算法
💻 TXT
字号:
/*
//////////////////////////////== 永川公司源文件 ==//////////////////////////////////////

    描述 : 本文件定义了专利单机版的基本接口
    说明 : 本文件中的类基于 MFC
    历史 : JJ created 2003-04-14

////////////////////////////////////////////////////////////////////////////////////////
*/


#pragma once
#include <afxcoll.h>
typedef void (__stdcall* IndexCallBack)(LPCTSTR lpszInfo);

/**<B>接口名</B> : IZEncrypt<BR>
  *<B>日期</B>   : 2003-4-16<BR>
  *<B>描述</B>   : 该接口用于实施某种加密,解密算法,并提供方法以使用该算法<BR>
*/
class IZEncrypt
{
public:
    /**
    * @param  PVOID pRowBuf 要加密的内存块
    * @param  DWORD dwRowBufSize 指出 pRowBuf 的大小,单位为 byte
    * @param  PVOID *ppEcrptBuf 已加密的内存块,该内存由 AllocMemory 方法分配,必须用 FreeMemory 方法释放
    * @param  DWORD* pdwEncrptBufSize 返回已加密内存块的大小,单位为 byte
    * @return S_OK 表示成功,否则为 ErrorDefine.h 中的错误定义或 WIN32 标准错误
    * <DT><B>Description</B></DT>
    * <DD>Encrypt 加密指定的内存块</DD>
    */
    virtual HRESULT Encrypt(PVOID pRowBuf, DWORD dwRowBufSize, PVOID* ppEcrptBuf, DWORD* pdwEncrptBufSize) = 0;

    /**
    * @param  PVOID pEcrptBuf 已加密的内存块
    * @param  DWORD dwEncrptBufSize 已加密的内存块的大小
    * @param  PVOID *ppRowBuf 解密后的内存块,该内存由 AllocMemory 方法分配,必须用 FreeMemory 方法释放
    * @param  DWORD* pdwRowBufSize 返回解密后的内存块的大小
    * @return S_OK 表示成功,否则为 ErrorDefine.h 中的错误定义或 WIN32 标准错误
    * <DT><B>Description</B></DT>
    * <DD>Dencrypt 解密指定的内存块</DD>
    */
    virtual HRESULT Dencrypt(PVOID pEcrptBuf, DWORD dwEncrptBufSize, PVOID* ppRowBuf, DWORD* pdwRowBufSize) = 0;

    /**
    * @param  DWORD dwSize 指定的内存大小
    * @return 为 NULL 则分配内存失败,否则为指向已分配的内存的指针,
    * <DT><B>Description</B></DT>
    * <DD>AllocMemory 分配指定大小的内存,该内存必须由 FreeMemory 方法释放,<font color='red'>该方法不是纯虚函数</font>,默认的实现为 new </DD>
    */
    virtual PVOID AllocMemory(DWORD dwSize)
    {
        return (PVOID)(new BYTE[dwSize]);
    }
    /**
    * @param  PVOID* ppBuf 指向要释放的内存指针的指针
    * <DT><B>Description</B></DT>
    * <DD>FreeMemory 释放由 AllocMemory 分配的内存。该方法<font color='red'>不是纯虚函数</font>,默认的实现为 delete </DD>
    */
    virtual void FreeMemory(PVOID* ppBuf)
    {
        delete [] *ppBuf;
        *ppBuf = NULL;
    }
};


/**<B>接口名</B> : IZStorage<BR>
  *<B>日期</B>   : 2003-4-14<BR>
  *<B>描述</B>   : 该接口用于读写本地的数据,并提供相应的方法供其它类使用 <BR>
*/
class IZStorage
{
public:
    /**
    * @param lpszName 数据文件名
    * @param dwMode 打开方式,只读或读写
    * @return S_OK 表示成功,否则为 ErrorDefine.h 中的错误定义或 WIN32 标准错误
    * <DT><B>Description</B></DT>
    * <DD>Open 打开由 lpszName 指定的文件名,在此函数中做相应的初始化工作,如果有错误,按 HRESULT 返回</DD>
    */
    virtual HRESULT Open(LPCTSTR lpszName, DWORD dwMode) = 0;

    /**
    * @return S_OK 表示成功,否则为 ErrorDefine.h 中的错误定义或 WIN32 标准错误
    * <DT><B>Description</B></DT>
    * <DD>Close 关闭文件,在此函数中做相关的释放任务</DD>
    */
    virtual HRESULT Close() = 0;

    /**
    * @param lpszRecordName 文件路径,也是本地数据文件中对该记录的唯一标识
    * @return S_OK 表示成功,否则为 ErrorDefine.h 中的错误定义或 WIN32 标准错误
    * <DT><B>Description</B></DT>
    * <DD>AddRecord 读取由 lpszRecordName 指定的文件,将其加密后存入本地数据文件</DD>
    */
    virtual HRESULT AddRecord(LPCTSTR lpszRecordName) = 0;
    
    /**
    * @param lpszRecordName 文件标识,若 lpszRecordName 为 NULL,则取当前记录指针所指记录的内容 
    * @prarm strContext 解密后的文件内容
    * @return S_OK 表示成功,否则为 ErrorDefine.h 中的错误定义或 WIN32 标准错误
    * <DT><B>Description</B></DT>
    * <DD>GetRecord 读取指定名称的记录,将其内容返回</DD>
    */
    virtual HRESULT GetRecord(CString& strContext, LPCTSTR lpszRecordName) = 0;


    /**
    * @return TRUE 表示为处于记录首,FALSE 为非记录首
    * <DT><B>Description</B></DT>
    * <DD>IsBof 测试当前的记录指针是否指向第一条记录</DD>
    */
    virtual BOOL IsBof() = 0;

    /**
    * @return TRUE 表示为处于记录尾,FALSE 为非记录尾
    * <DT><B>Description</B></DT>
    * <DD>IsEof 测试当前的记录指针是否指向最后一条记录</DD>
    */
    virtual BOOL IsEof() = 0;
    
    /**
    * @return TRUE 表示 Next 成功,FASLE 表示已处于文件尾,不应再调用 Next.
    * <DT><B>Description</B></DT>
    * <DD>Next 移动文件指针到下一条记录</DD>
    */
    virtual BOOL Next() = 0;

    /**
    * <DT><B>Description</B></DT>
    * <DD>Begin 移动文件指针到第一条记录</DD>
    */
    virtual void Begin() = 0;

    /**
    * @param  IZEncrypt* pEncrypter 指定的加密算法,为 NULL 则表示不需要加密
    * <DT><B>Description</B></DT>
    * <DD>SetEncrypter 设置加密解密算法</DD>
    * @see IZEncrypt
    */
    virtual void SetEncrypter(IZEncrypt* pEncrypter) = 0;
};


/**<B>接口名</B> : IZIndexer<BR>
  *<B>日期</B>   : 2003-4-14<BR>
  *<B>描述</B>   : 该接口用于将一个文件加入索引库<BR>
*/
class IZIndexer
{
public:

    /**
    * @param lpszFolder  欲 添加的文件夹名称
    * @param lpszExt 指定的文件扩展名,为 NULL 则表示所有文件,不需要“.”,多个扩展名用“;”隔开
    * @param bIncludeSubs 为 TRUE 则表示需要枚举子文件夹
    * @return S_OK 表示成功,否则为 ErrorDefine.h 中的错误定义或 WIN32 标准错误
    * <DT><B>Description</B></DT>
    * <DD>AddFolder 添加在 lpszFolder 中扩展名为 lpszExt 的文件到索引列表中</DD>
    */
    virtual HRESULT AddFolder(LPCTSTR lpszFolder, LPCTSTR lpszExt, BOOL bIncludeSubs) = 0;

    /**
    * @param lpszName 欲 添加的文件名称
    * @return S_OK 表示成功,否则为 ErrorDefine.h 中的错误定义或 WIN32 标准错误
    * <Dt><B>Description</B></Dt>
    * <Dd>AddFile 添加名称为 lpszName 的文件到索引列表中</Dd>
    */
    virtual HRESULT AddFile(LPCTSTR lspzName) = 0;

    /**
    * @param pCallback,用 户回调,typedef void (__stdcall* IndexCallBack)(LPCTSTR lpszInfo), 说明了当前索引的进度
    * @return S_OK 表示成功,否则为 ErrorDefine.h 中的错误定义或 WIN32 标准错误
    * <Dt><B>Description</B></Dt>
    * <Dd>Index 索引索引列表中的文件,并提供了回调函数来通知当前的进度</Dd>
    */
    virtual HRESULT Index(IndexCallBack* pCallback) = 0;

    /**
    * <Dt><B>Description</B></Dt>
    * <Dd>ResetList 将当前的索引列表清空</Dd>
    */
    virtual void ResetList() = 0;
};


/**<B>接口名</B> : IZSearcher<BR>
  *<B>日期</B>   : 2003-4-14<BR>
  *<B>描述</B>   : 该接口用于查询一个字符串,返回查找到的文件名<BR>
*/
class IZSearcher
{
public:
    /**
    * @param lpszKey 需要查找的字符串
    * @param results results 首先将被清空,返回后每一项代表一个记录名
    * @return S_OK 表示成功,否则为 ErrorDefine.h 中的错误定义或 WIN32 标准错误
    * <Dt><B>Description</B></Dt>
    * <Dd>Search 查找指定的数据,将符合匹配的记录名返回在 results 中,调用者使用得到的记录名调用 IZStorage::GetRecord 方法得到记录内容</Dd>
    * @see IZStorage#GetRecord
    */
    virtual HRESULT Search(LPCTSTR lpszKey, CStringArray& results) = 0;

    /**
    * @param lpszName 指定的索引文件名,为 NULL 则采用默认文件名
    * @return S_OK 表示成功,否则为 ErrorDefine.h 中的错误定义或 WIN32 标准错误
    * <Dt><B>Description</B></Dt>
    * <Dd>SetIndexFile 设置索引文件名</Dd>
    */
    virtual HRESULT SetIndexFile(LPCTSTR lpszName) = 0;
};


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -