//生成密文
bool CWHEncrypt::XorEncrypt(LPCTSTR pszSourceData, LPTSTR pszEncrypData, WORD wMaxCount)
{
//變數定義
CT2CW strSrcData(pszSourceData);
WCHAR szEncrypData[MAX_ENCRYPT_LEN+1]=L"";
//生成密鑰
WORD wRandKey[ENCRYPT_KEY_LEN];
wRandKey[0]=lstrlenW(strSrcData);
for (WORD i=1;i<CountArray(wRandKey);i++) wRandKey[i]=rand()%0xFFFF;
//步驟準備
WORD wTempCode=0;
WORD wTimes=((wRandKey[0]+ENCRYPT_KEY_LEN-1)/ENCRYPT_KEY_LEN)*ENCRYPT_KEY_LEN;
//引數效驗
ASSERT((wTimes*8+1)<=wMaxCount);
if ((wTimes*8+1)>wMaxCount) return false;
//生成密文
for (WORD i=0;i<wTimes;i++)
{
if (i<wRandKey[0]) wTempCode=strSrcData[i]^wRandKey[i%ENCRYPT_KEY_LEN];
else wTempCode=wRandKey[i%ENCRYPT_KEY_LEN]^(WORD)(rand()%0xFFFF);
swprintf(szEncrypData+i*8,L"%04X%04X",wRandKey[i%ENCRYPT_KEY_LEN],wTempCode);
}
//字符轉換
CW2CT strEncrypData(szEncrypData);
lstrcpyn(pszEncrypData,strEncrypData,wMaxCount);
return true;
}
轉換成DELPHI 謝謝大神們
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/52129.html
標籤:語言基礎/算法/系統設計
上一篇:撰寫WindowsApplication時,如何才從鍵盤讀入資料,并保存在相關變數中?
下一篇:碰到難題,哪位老大給指點下
