- 论坛徽章:
- 18
|
本帖最后由 bikkuri 于 2014-09-13 08:25 编辑
您好,谢谢您的回复。
但是由于我是在我的busybox系统上跑这个程序,所以有的命令比如for ((x=0;x<=4;x+=2))就不支持。
但是可以改用其他命令来代替,比如- gck_key(){
- x=0
- while [ $x -le 4 ]
- do
- res_yhf=`awk -vOK=${1:$x:2} -vCK=${2:4-$x:2} 'BEGIN{printf("%X",res=(xor(OK,CK)<10)?"0"(xor(OK,CK)):xor(OK,CK))}'`
- sum_key=${sum_key}${res_yhf}
- let x+=2;
- done
- echo ${sum_key}
- }
复制代码 然后好像awk的xor函数并不能直接识别16进制数:
root@kbox:/tmp# awk -va="48656" -vb="621" 'BEGIN{printf("%X\n",xor(a,b))}'
BC7D
root@kbox:/tmp# awk -va="48656" -vb="621A" 'BEGIN{printf("%X\n",xor(a,b))}'
BC7D
root@kbox:/tmp#
所以您的程序在我的系统上也不能得到正确的结果:- root@kbox:/tmp# gck_key(){
- > x=0
- > while [ $x -le 4 ]
- > do
- > res_yhf=`awk -vOK=${1:$x:2} -vCK=${2:4-$x:2} 'BEGIN{printf("%X",res=(xor(OK,CK)<10)?"0"(xor(OK,CK)):xor(OK,CK))}'`
- > sum_key=${sum_key}${res_yhf}
- > let x+=2;
- > done
- > echo ${sum_key}
- > }
- root@kbox:/tmp# first=48656C
- root@kbox:/tmp# echo $first
- 48656C
- root@kbox:/tmp# echo $org_key
- CC621E
- root@kbox:/tmp# gck_key $org_key $first
- 0006387
复制代码 这里就没有得到预期的结果5607A0。
另外,我的busybox也不支持((16#${1}*16#123456+16#ABCD)%16#800000))这样的命令。
root@kbox:/tmp# echo ((16#ABCD + 16#1234))
-sh: syntax error: unexpected "(" (expecting ""
root@kbox:/tmp#
root@kbox:/tmp# expr 16#ABCD + 16#1234
root@kbox:/tmp#
所以可能还是要写一个10进制和16进制之间转换的小函数。
最后希望将得到的密文以二进制形式保存到文件。
别的地方好像没什么问题。
回复 2# 李满满
|
|