如何xor 2十六进制输入?

时间:2017-03-01 12:13:22

标签: xor

我有2个文件:1.txt和2.txt,都包含十六进制字符。

1.txt : AFCD271E1EF7B1C3
2.txt : AD6DD9F49F562AF0

我需要一个命令linux来获取文件" 3.txt"结果是xt-ing数据内容为1.txt和2.txt。

E.g:

3.txt : 2A0FEEA81A19B33

提前致谢。

1 个答案:

答案 0 :(得分:0)

创建xorfiles脚本,chmod + x xorfiles,xorfiles 1.txt 2.txt> 3.txt

#!/bin/bash
file1=$(echo| cat $1)
file2=$(echo | cat $2)


#xor $file1 $file2

function  xor()
{
        local res=(`echo "$1" | sed "s/../0x& /g"`)
        shift 1
        while [[ "$1" ]]; do
            local one=(`echo "$1" | sed "s/../0x& /g"`)
            local count1=${#res[@]}
            if [ $count1 -lt ${#one[@]} ]
            then
                  count1=${#one[@]}
            fi
            for (( i = 0; i < $count1; i++ ))
            do
                  res[$i]=$((${one[$i]:-0} ^ ${res[$i]:-0}))
            done
            shift 1
        done
        printf "%02x" "${res[@]}"
}

echo $(xor $file1 $file2)

结果:

ubuntu@ip-10-0-1-137:~$ ./xorfiles ./1.txt ./2.txt
02a0feea81a19b33