如果是IP 地址族是IPv4,X-Address是通过获取映射的IP来计算的 以主机字节顺序寻址,与魔术cookie进行异或,并且 将结果转换为网络字节顺序。如果是IP地址 family是IPv6,X-Address是通过获取映射的IP地址来计算的 在主机字节顺序中,与魔术的串联进行异或 cookie和96位事务ID,并将结果转换为 网络字节顺序。
我正在Node.JS中编写一个STUN服务器,我试图了解如何对128位值进行异或。我觉得好像它会涉及使用Buffer
模块中的这些函数之一,尽管它说它只支持最多48位。关于如何为IPv6地址实现128位XOR运算符的任何建议?
答案 0 :(得分:2)
这是我的CryptoPals代码中的XOR运算符:
var xor = function (b0, b1) {
if (Buffer.isBuffer(b0)) {
b0 = new Buffer(b0);
}
if (Buffer.isBuffer(b1)) {
b1 = new Buffer(b1);
}
if (b0.length !== b1.length) {
console.log(b0.length, b1.length);
throw new Error('Tried to xor two buffers of differing length');
}
var arr = [];
for (var i = 0; i < b0.length; i++) {
arr.push(b0[i] ^ b1[i]);
}
return new Buffer(arr);
};