调用CryptEncrypt失败?解决方法
调用CryptEncrypt失败??急!!
请教调用CryptEncrypt函数失败,其错误代码为234,这是为何原因呢?
代码如下:
if(!CryptEncrypt(m_hSessionKey,0,TRUE,0,pMBuffer,&dwSize,dwDatalenth))
{
int error = GetLastError();//error = 234
}
HCRYPTKEY m_hSession会话密钥句柄(调用值为1549656)//值正确
BYTE* pMBuffer需要加密的指针(0x3bbc8)//明文正确
DWORD dwSize加密后存储长度的变量(224)
DWORD dwDatalenth需要加密的数据长度(221)
标注:会话密钥是通过Password的散列生成的,通过调用CryptDeriveKey;我一直没有找到为什么CryptEncrypt调用失败,请大家帮助,谢谢!
------解决方案--------------------
有更多数据可用
有可能是pMBuffer的长度不对,调试看看
------解决方案--------------------
GetLastError 〖234〗-更多数据可用。
------解决方案--------------------
pMBuffer不够长,有些算法加密后的密文会比明文长,而CryptEncrypt是在原处返回密文,所以pMBuffer长度要指定比明文长,对于分组加密算法,一般要多长一组
------解决方案--------------------
参考描述的各个参数 http://blog.****.net/cnbragon/archive/2006/05/09/715058.aspx
请教调用CryptEncrypt函数失败,其错误代码为234,这是为何原因呢?
代码如下:
if(!CryptEncrypt(m_hSessionKey,0,TRUE,0,pMBuffer,&dwSize,dwDatalenth))
{
int error = GetLastError();//error = 234
}
HCRYPTKEY m_hSession会话密钥句柄(调用值为1549656)//值正确
BYTE* pMBuffer需要加密的指针(0x3bbc8)//明文正确
DWORD dwSize加密后存储长度的变量(224)
DWORD dwDatalenth需要加密的数据长度(221)
标注:会话密钥是通过Password的散列生成的,通过调用CryptDeriveKey;我一直没有找到为什么CryptEncrypt调用失败,请大家帮助,谢谢!
------解决方案--------------------
有更多数据可用
有可能是pMBuffer的长度不对,调试看看
------解决方案--------------------
GetLastError 〖234〗-更多数据可用。
------解决方案--------------------
pMBuffer不够长,有些算法加密后的密文会比明文长,而CryptEncrypt是在原处返回密文,所以pMBuffer长度要指定比明文长,对于分组加密算法,一般要多长一组
------解决方案--------------------
参考描述的各个参数 http://blog.****.net/cnbragon/archive/2006/05/09/715058.aspx