200
社区成员
发帖
与我相关
我的任务
分享
string DES_Encrypt(const string cleartext, const string key)
{
string strCipherText;
DES_cblock keyEncrypt, ivec;
memset(keyEncrypt, 0, 8);
if (key.length() <= 8)
memcpy(keyEncrypt, key.c_str(), key.length());
else
memcpy(keyEncrypt, key.c_str(), 8);
DES_key_schedule keySchedule;
DES_set_odd_parity(&keyEncrypt);
DES_set_key_checked(&keyEncrypt, &keySchedule);
memcpy(ivec, cbc_iv, sizeof(cbc_iv));
int iLength = cleartext.length() % 8 ? (cleartext.length() / 8 + 1) * 8 : cleartext.length();
unsigned char* tmp = new unsigned char[iLength +16];
memset(tmp, 0, iLength);
DES_ncbc_encrypt((const unsigned char*)cleartext.c_str(), tmp, cleartext.length()+1, &keySchedule, &ivec, DES_ENCRYPT);
strCipherText = (char*)tmp;
printf("strciper_length :%d\n",(int)(strCipherText.length()));
delete [] tmp;
return strCipherText;
}