にこの暗号を変換しますこれは私が使用してC#コードです:はどのように私はC#2から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);
}
}
}
、これは私はいくつかのためにしかし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;
}
を動作するように変換する方法でありますCが動作しない理由。
C#ソースがCから移植されたようです。ああ、楽しい!電話ゲーム! – cdhowie
ユニットテストはありますか? – khachik
@khachik、そうではありません。 – Basser