2017-03-01 32 views
0

我有2个文件:1.txt和2.txt,都包含十六进制字符。如何异或2个十六进制输入?

1.txt : AFCD271E1EF7B1C3 
2.txt : AD6DD9F49F562AF0 

我需要一个命令Linux获取文件“3.txt”用的1.txt和2.txt的异或两个数据内容的结果。

例如为:

3.txt : 2A0FEEA81A19B33 

在此先感谢。

+0

有人做应用程序为您提供:HTTP:// www.nirsoft.net/utils/xorfiles.html 下一次请更具体地介绍一下编程。你想要的语言或什么操作系统。 – aslavkin

+0

在此先感谢 –

+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) 

结果:

[email protected]:~$ ./xorfiles ./1.txt ./2.txt 
02a0feea81a19b33