使用WinCrypt进行简单的对称加密实例
2008年12月16日星期二
微软在wincrypt.h中定义了大量的加解密算法的API,方便了软件加解密的实现,可以使我们不必关注密码学的算法,就可以实现高效率的软件加密。下面通过一个类,对API实现简单的封装。详细代码如下:
头文件:MyCryptOpt.h
#pragma once
#include "windows.h"
#include "wincrypt.h"
#define MY_ENCODING_TYPE (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)
#define KEYLENGTH 0x00800000
#define ENCRYPT_ALGORITHM CALG_RC4
#define ENCRYPT_BLOCK_SIZE 8
class CMyCryptOpt
{
public:
CMyCryptOpt(void);
~CMyCryptOpt(void);
BOOL InitCrypt();
void DestroyCrypt();
BOOL MyEncryptFile(LPSTR lpSourceFile, LPSTR lpDestFile, LPSTR lpPassword);
BOOL MyDecryptFile(LPSTR lpSourceFile, LPSTR lpDestFile, LPSTR lpPassword);
protected:
BOOL CryptProcess(LPSTR lpSourceFile, LPSTR lpDestFile, LPSTR lpPassword);
private:
FILE *m_hSource;
FILE *m_hDestination;
HCRYPTPROV m_hCryptProv;
HCRYPTKEY m_hKey;
HCRYPTHASH m_hHash;
PBYTE m_pbBuffer;
DWORD m_dwBlockLen;
DWORD m_dwBufferLen;
DWORD m_dwCount;
};
源文件:MyCryptOpt.cpp
#include "StdAfx.h"
#include "MyCryptOpt.h"
CMyCryptOpt::CMyCryptOpt(void)
{