Ceci est le code C# J'utilise:Comment puis-je convertir cette Crypto de C# à C
public void Decrypt(byte[] @in, byte[] @out, int size)
{
lock (this)
{
for (ushort i = 0; i < size; i++)
{
if (_server)
{
@out[i] = (byte)(@in[i]^0xAB);
@out[i] = (byte)((@out[i] << 4) | (@out[i] >> 4));
@out[i] = (byte)(ConquerKeys.Key2[_inCounter >> 8]^@out[i]);
@out[i] = (byte)(ConquerKeys.Key1[_inCounter & 0xFF]^@out[i]);
}
else
{
@out[i] = (byte)(ConquerKeys.Key1[_inCounter & 0xFF]^@in[i]);
@out[i] = (byte)(ConquerKeys.Key2[_inCounter >> 8]^@out[i]);
@out[i] = (byte)((@out[i] << 4) | (@out[i] >> 4));
@out[i] = (byte)(@out[i]^0xAB);
}
_inCounter = (ushort)(_inCounter + 1);
}
}
}
ce qui est la façon dont je me suis converti à travailler en C.
char* decrypt(char* in, int size, int server)
{
char out[size];
memset(out, 0, size);
for (int i = 0; i < size; i++)
{
if (server == 1)
{
out[i] = in[i]^0xAB;
out[i] = out[i] << 4 | out[i] >> 4;
out[i] = Key2[incounter >> 8]^out[i];
out[i] = Key1[incounter & 0xFF]^in[i];
}
else if (server == 0)
{
out[i] = Key1[incounter & 0xFF]^in[i];
out[i] = Key2[incounter >> 8]^out[i];
out[i] = out[i] << 4 | out[i] >> 4;
out[i] = out[i]^0xAB;
}
incounter++;
}
return out;
}
Cependant, pour certains raison que le C ne fonctionne pas.
On dirait que la source C# a été transférée de C. Oh, comme c'est amusant! Un jeu de téléphone! – cdhowie
Avez-vous des tests unitaires? – khachik
@khachik, non je ne sais pas. – Basser