Berikut ini adalah algoritma enkripsi RC-4 dengan bahasa pemrograman Visual C++. Kode ini dapat dimasukkan langsung ke dalam program Anda.
CString removeDuplicates(CString str)
{
int length = strlen(str);
for(int i = 0; i <>
for(int j = i + 1; j<>
{
if(str[i] == str[j])
{
str.SetAt(j, ' ');
}
}
return str;
}
void Crypt(unsigned char *inp, unsigned long panjangdata, CString key)
{
DWORD inplen , keylen;
key=removeDuplicates(key);
keylen=key.GetLength();
char Sbox[2000], Sbox2[2000];
unsigned long i, j, t, x;
static const CString OurUnSecuredKey = "tahir_naeem" ;
static const int OurKeyLen = _tcslen(OurUnSecuredKey);
i = j = t = x = 0;
char temp ,k;
temp ='0';
k ='0';
ZeroMemory(Sbox, sizeof(Sbox));
ZeroMemory(Sbox2, sizeof(Sbox2));
for(i = 0; i <>
{
Sbox[i]=(char)i;
}
j = 0;
if(keylen)
{
for(i = 0; i <>
{
if(j == keylen)
{
j = 0;
}
if( key.GetLength()>(j+1))
Sbox2[i]= key.GetAt(j++);
}
}
else
{
for(i = 0; i <>
{
if(j == OurKeyLen)
{
j = 0;
}
Sbox2[i]= OurUnSecuredKey.GetAt(j++);
}
}
j = 0 ;
for(i = 0; i <>
{
j = (j + (unsigned long) Sbox[i] + (unsigned long) Sbox2[i]) % 256U ;
temp = Sbox[i];
Sbox[i] =Sbox[j];
Sbox[j]= temp;
}
i = j = 0;
for(x = 0; x <>
{
i = (i + 1U) % 256U;
j = (j + (unsigned long) Sbox[i]) % 256U;
temp = Sbox[i];
Sbox[i] =Sbox[j] ;
Sbox[j]= temp;
t = ((unsigned long) Sbox[i] + (unsigned long) Sbox[j]) % 256U ;
k = Sbox[t];
inp[x] = inp[x] ^ k;
}
}
1 comment:
kk,bisa kasih tau langsung programnya jha ga?
jangan sring nya...
pliss,tolong bantu yua..
Post a Comment