Hey
Ich hab wieder dieses byref-problem.
Es geht um diese RC4 function :
Ich möchte sie so modifizieren das das input array nicht bei reference übergeben wird, stattdessen soll einfach das encrypted byte array returned werden.
Wichtig ist das das ursprüngliche input array unverändert bleibt..
Ich hab das so versucht :
Allerdings ist auch das ursprüngliche array (myArr) verschlüsselt..
Das soll aber nicht so sein. Warum passiert das, ich übergebe nichts byref..
Ich hatte das Problem bereits vor einiger zeit in einem anderen thread, aber iwie verstehe ich nicht ganz wieso das passiert..
Ich hab wieder dieses byref-problem.
Es geht um diese RC4 function :
C#-Quellcode
- public void RC4(ref byte[] bytes, byte[] key)
- {
- byte[] s = new byte[256];
- byte[] k = new byte[256];
- byte temp;
- int i, j;
- for (i = 0; i < 256; i++)
- {
- s[i] = (byte)i;
- k[i] = key[i % key.GetLength(0)];
- }
- j = 0;
- for (i = 0; i < 256; i++)
- {
- j = (j + s[i] + k[i]) % 256;
- temp = s[i];
- s[i] = s[j];
- s[j] = temp;
- }
- i = j = 0;
- for (int x = 0; x < bytes.GetLength(0); x++)
- {
- i = (i + 1) % 256;
- j = (j + s[i]) % 256;
- temp = s[i];
- s[i] = s[j];
- s[j] = temp;
- int t = (s[i] + s[j]) % 256;
- bytes[x] ^= s[t];
- }
- }
Ich möchte sie so modifizieren das das input array nicht bei reference übergeben wird, stattdessen soll einfach das encrypted byte array returned werden.
Wichtig ist das das ursprüngliche input array unverändert bleibt..
Ich hab das so versucht :
C#-Quellcode
- public static byte[] RC4(byte[] bytes, byte[] key)
- {
- byte[] s = new byte[256];
- byte[] k = new byte[256];
- byte temp;
- int i, j;
- for (i = 0; i < 256; i++)
- {
- s[i] = (byte)i;
- k[i] = key[i % key.GetLength(0)];
- }
- j = 0;
- for (i = 0; i < 256; i++)
- {
- j = (j + s[i] + k[i]) % 256;
- temp = s[i];
- s[i] = s[j];
- s[j] = temp;
- }
- i = j = 0;
- for (int x = 0; x < bytes.GetLength(0); x++)
- {
- i = (i + 1) % 256;
- j = (j + s[i]) % 256;
- temp = s[i];
- s[i] = s[j];
- s[j] = temp;
- int t = (s[i] + s[j]) % 256;
- bytes[x] ^= s[t];
- }
- return bytes;
- }
Allerdings ist auch das ursprüngliche array (myArr) verschlüsselt..
Das soll aber nicht so sein. Warum passiert das, ich übergebe nichts byref..
Ich hatte das Problem bereits vor einiger zeit in einem anderen thread, aber iwie verstehe ich nicht ganz wieso das passiert..
C# Developer
Learning C++
Learning C++