c++源码:
int DO_XOR(byte* result, signed int a2)
{
int v2; // r3
int v3; // lr
int v4; // r3
if (a2 >= 2)
{
v2 = 0;
v3 = a2 / 2;
do
{
result[v2] ^= result[a2 / 2 + v2];
++v2;
} while (v3 != v2);
if (a2 >= 2 && v3 < a2)
{
v4 = a2 / 2;
do
{
result[v4] ^= result[v3 - 1];
if (v3 < 2)
break;
++v4;
--v3;
} while (v4 < a2);
}
}
return 0;
}
python:
def DO_XOR(result,a2):
if a2 >=2:
v2 = 0
v3 = a2 / 2
while True:
result[v2] ^= result[int(a2 / 2 + v2)]
v2+=1
if not v3 != v2:
break
if v3 < a2:
v4 = a2 / 2
while True:
result[int(v4)] ^= result[int(v3 - 1)]
if (v3 < 2):
break
v4+=1
v3-=1
if not (v4 < a2):
break
return result
result="xxxxxxxxxxxxx"
DO_XOR(bytearray(result.encode()),len(result))
java:
public static byte[] xor(byte[] result,int a2)
{
int v2; // r3
int v3; // lr
int v4; // r3
if (a2 >= 2)
{
v2 = 0;
v3 = a2 / 2;
do
{
result[v2] ^= result[a2 / 2 + v2];
++v2;
} while (v3 != v2);
if (v3 < a2)
{
v4 = a2 / 2;
do
{
result[v4] ^= result[v3 - 1];
if (v3 < 2)
break;
++v4;
--v3;
} while (v4 < a2);
}
}
return result;
}
result = "xxxxxxxxx";
xor(result.getBytes(),result.length());