请教d3des算法问题
偶而出现如下问题:
这是需要加密的字符串(原型:"ITSOFT-027\r\n%s\r\n1%s\r\n%s\r\n%d\r\n%s")
ITSOFT-027
aaaaaaaa
12005-01-31
00-E0-4C-41-29-CD
1
00-E0-4C-41-29-CD
但是好像在算法中出来了0值,导致返回的加密字符串位数不够,解密出来就只有一半左右的串了。
结果如下:
ITSOFT-027
aaaaaaaa
12005-01-31
00-E0
后面的字符就没了,这是怎么回事?
代码:
int des(){
char* szSrc = sbuf.GetBuffer(sbuf.GetLength());
int iLen = sbuf.GetLength()%8 == 0 ? sbuf.GetLength() : (sbuf.GetLength()/8+1)*8;
char* szDes = new char[iLen + 1];
DesEncrypt(szDesKey , (unsigned char*)szSrc , (unsigned char*)szDes , strlen(szSrc) , EN0);
szDes[iLen] = 0;
DesEncrypt(szDesKey , (unsigned char*)szDes , (unsigned char*)szDes , strlen(szDes) , DE1);
AfxMessageBox(szDes);
}
////
extern "C"
{
#include "d3des.h"
}
char* szDesKey = "Edwin708";
int DesEncrypt(char* szKey, unsigned char* lpbySrc, unsigned char* lpbyDest, int iLength , int iType)
{
unsigned char byKey[8] = {0};
char szTempKey[24];
strcpy(szTempKey, szKey);
makekey(szTempKey, byKey);
deskey(byKey, iType);
int i;
for (i = 0; i < iLength; i += 8)
des(lpbySrc + i, lpbyDest + i);
return 1;
}