/////////////////////////////////////////////////////////////////////////////////////////
////////////////////////// RC4 Encryption //////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
LPBYTE RC4(LPBYTE lpBuf, LPBYTE lpKey, DWORD dwBufLen, DWORD dwKeyLen)
{
int a, b = 0, s[256];
BYTE swap;
DWORD dwCount;
for(a = 0; a < 256; a++)
{
s[a] = a;
}
for(a = 0; a < 256; a++)
{
b = (b + s[a] + lpKey[a % dwKeyLen]) % 256;
swap = s[a];
s[a] = s[b];
s[b] = swap;
}
for(dwCount = 0; dwCount < dwBufLen; dwCount++)
{
a = (a + 1) % 256;
b = (b + s[a]) % 256;
swap = s[a];
s[a] = s[b];
s[b] = swap;
lpBuf[dwCount] ^= s[(s[a] + s[b]) % 256];
}
return lpBuf;
}
jeudi 3 janvier 2013
RC4 in C++
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire