日期:2014-05-17  浏览次数:20916 次

AES加密的问题
请教一下,使用AES cbc模式加密的时候,明文和密文的长度的关系是怎么样的?

------解决方案--------------------
长度相等!
------解决方案--------------------
是一致的
------解决方案--------------------
#pragma once

#include <Windows.h>
#include <WinCrypt.h>

#define MAKE_KEYLENGTH(len)\
(len<<0x10)
//AES算法封装类
class CAESAlg
{
public:
CAESAlg(void);
public:
virtual ~CAESAlg(void);
public:
// 初始化
BOOL Init(PBYTE pbPassword, DWORD dwLen, DWORD dwBlockSize=128);
// 加密函数
BOOL Encrypt(PBYTE pBuffer, DWORD dwBufferSize, LPDWORD pdwDataLen);
// 解密函数
BOOL Decrypt(PBYTE pData, LPDWORD pdwDataLen);
private:
// CSP对象的句柄
HCRYPTPROV _hCryptProc;
// 加密解密密钥
HCRYPTKEY _hKey;
// 块大小
DWORD _dwBlockSize;

};

#include "StdAfx.h"
#include "AESAlg.h"

CAESAlg::CAESAlg(void)
: _dwBlockSize(16),
_hCryptProc(NULL),
_hKey(NULL)
{
}

CAESAlg::~CAESAlg(void)
{
if(_hKey)
{
CryptDestroyKey(_hKey);
_hKey=NULL;
}
if (_hCryptProc)
{
CryptReleaseContext(_hCryptProc,0);
_hCryptProc=NULL;
}
}