我有初始地址和输出..我需要找出用于XOR的内容
129.94.5.93:46 XOR ????? == 10.165.7.201:14512
答案 0 :(得分:1)
XOR有一个有趣的属性,如果你将它应用于它的一个操作数和结果,你会得到另一个操作数。换句话说,如果
r = a ^ b
然后
b = r ^ a
其中a
和b
是操作数,结果是r
。
因此,与原始版本进行异或的数据是
139.251.2.148:14494
以下是C#中的一个简短程序,用于根据您的数据生成此结果:
var a = new[] {129,94,5,93,46};
var b = new[] {10,165,7,201,14512};
var c = new int[a.Length];
for (int i = 0 ; i != a.Length ; i++) {
c[i] = a[i] ^ b[i];
Console.WriteLine("a={0} b={1} c={2} back={3}", a[i], b[i], c[i], c[i] ^ a[i]);
}
答案 1 :(得分:1)
XOR是一个可逆的"这样的功能:
XOR B = C. A XOR C = B
因此,如果您只是对您拥有的2个值进行异或,则可以获得缺失的数字
所以
129.94.5.93:46 XOR X == 10.165.7.201:14512
x == 129.94.5.93:46 OXR 10.165.7.201:14512
答案 2 :(得分:1)
解决这个问题的最简单方法是查看每个数字的二进制表示(让我们在每一侧取第一个数字):
129 = 10000001
XOR 139 = 10001011
======================
010 = 00001010
从中我们可以看出129 XOR 139 == 10
相当于129 XOR 10 == 139
。