JavaScript中两个十六进制字符串的异或
你知道如何对十六进制值执行异或运算吗?JavaScript中的逐位运算只对数值有效 您应该JavaScript中两个十六进制字符串的异或,javascript,Javascript,你知道如何对十六进制值执行异或运算吗?JavaScript中的逐位运算只对数值有效 您应该parseInt(hexString,16)hex字符串。特别是在你的情况下,这是行不通的,因为你的十六进制对于一个数字来说太大了。您必须创建自己定制的XOR函数 请查看此链接: 生成的bytearray将可用于手动异或。逐字节。也许这会有帮助:。您可以使用这样的函数 "*)(" 函数异或(a,b){ 如果(!Buffer.isBuffer(a))a=新缓冲区(a) 如果(!Buffer.isBuffer
parseInt(hexString,16)
hex字符串。特别是在你的情况下,这是行不通的,因为你的十六进制对于一个数字来说太大了。您必须创建自己定制的XOR函数
请查看此链接:
生成的bytearray将可用于手动异或。逐字节。也许这会有帮助:。您可以使用这样的函数
"*)("
函数异或(a,b){
如果(!Buffer.isBuffer(a))a=新缓冲区(a)
如果(!Buffer.isBuffer(b))b=新缓冲区(b)
var res=[]
如果(a.长度>b.长度){
对于(变量i=0;i来源:下面的函数接受两个字符串,如“041234FFFFFFFFFF”和“0000000 709000003”(pin块和卡块的经典示例) 上述两个字符串的预期结果为“041234F8F6FFFFFC”
函数bitwiseXorHexString(pinBlock1、pinBlock2){
var结果=“”
对于(让索引=0;索引<16;索引++){
const temp=(parseInt(pinBlock1.charAt(index),16)^parseInt(pinBlock2.charAt(index,16)).toString(16).toUpperCase()
结果+=温度
}
返回结果
}
注意:这是对固定长度为16的xor 2字符串进行的。您可以根据需要修改它。是否应该
cli
bestr
?是的,您说得对。我会改变的。谢谢:-)
str = 'abc';
c = '';
key = 'K';
for(i=0; i<str.length; i++) {
c += String.fromCharCode(str[i].charCodeAt(0).toString(10) ^ key.charCodeAt(0).toString(10)); // XORing with letter 'K'
}
return c;
"*)("
function xor(a, b) {
if (!Buffer.isBuffer(a)) a = new Buffer(a)
if (!Buffer.isBuffer(b)) b = new Buffer(b)
var res = []
if (a.length > b.length) {
for (var i = 0; i < b.length; i++) {
res.push(a[i] ^ b[i])
}
} else {
for (var i = 0; i < a.length; i++) {
res.push(a[i] ^ b[i])
}
}
return new Buffer(res);
}
function bitwiseXorHexString(pinBlock1, pinBlock2) {
var result = ''
for (let index = 0; index < 16; index++) {
const temp = (parseInt(pinBlock1.charAt(index), 16) ^ parseInt(pinBlock2.charAt(index), 16)).toString(16).toUpperCase()
result += temp
}
return result
}