c++ do_xor(异或运算加密) 改写成python和java

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());

猜你喜欢

转载自blog.csdn.net/m0_38124502/article/details/117336105
今日推荐