Hallo,
ich muss ein C-Algorythmus nach VBA umbauen. C ist nicht meine Sprache und irgendwo habe ich ein Problem. Kann mir jemand helfen wo der Fehler liegt?
C-Code:
// Funktion zum Entschlüsseln der Datenblöcke
void EnCrypt(BYTE *pKey, int keyLen, BYTE *pData, int datenLen)
{
BYTE RC4_sbox[256];
int i = 0, j = 0, k = 0, temp = 0, t = 0;
for (j = 0; j < 256; j++)
RC4_sbox[j] = j;
j = 0;
for (i=0; i < 256; i++)
{
j = (j + RC4_sbox[i] + pKey[i % keyLen]) % 256;
temp = RC4_sbox[i];
RC4_sbox[i] = RC4_sbox[j];
RC4_sbox[j] = temp;
}
for (k=0; k < datenLen; k++)
{
i = (i + 1) % 256;
j = (j + RC4_sbox[i]) % 256;
temp = RC4_sbox[i];
RC4_sbox[i] = RC4_sbox[j];
RC4_sbox[j] = temp;
t = (RC4_sbox[i] + RC4_sbox[j]) % 256;
pData[k] = (pData[k] ^ RC4_sbox[t]);
}
}
VBA-Code
Sub EnCryptVba(ByVal pKey As Variant, ByVal keylen As Integer, ByRef pData() As Byte, ByVal datenLen As Integer)
Dim RC4_sbox(0 To 255) As Byte
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim t As Integer
Dim temp As Variant
Dim tempbyte As Byte
For j = 0 To 255 Step 1
RC4_sbox(j) = j
Next
For i = 0 To 255 Step 1
j = (j + RC4_sbox(i) + pKey(i Mod keylen)) Mod 256
temp = RC4_sbox(i)
RC4_sbox(i) = RC4_sbox(j)
RC4_sbox(j) = temp
Next
For k = 0 To datenLen Step 1
i = (i + 1) Mod 256
j = (j + RC4_sbox(i)) Mod 256
temp = RC4_sbox(i)
RC4_sbox(i) = RC4_sbox(j)
RC4_sbox(j) = temp
t = (CInt(RC4_sbox(i)) + CInt(RC4_sbox(j))) Mod 256
pData(k) = (pData(k) Xor RC4_sbox(t))
Next
'EnCryptVBA = pData
End Sub
Danke für eure Hilfe
eklinkow
|