免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: bikkuri
打印 上一主题 下一主题

[文本处理] 请高手帮我用shell写一个加密程序 [复制链接]

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
21 [报告]
发表于 2014-09-19 17:08 |显示全部楼层
不好意思,我还想请教一个问题,有什么办法可以把这两个文件合并成一个文件吗?
我尝试把bc的那个文件写成sh文件里的子程序,但是好像总是运行不正常,不知道是哪里错了。

damcool 发表于 2014-09-18 14:52
修正错误,目前最快版。
encrypt.bc.shencrypt.bcOutput

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
22 [报告]
发表于 2014-09-19 21:55 |显示全部楼层
太好啦!居然比bc还要快啊!
我今天下午测试的bc版,在您的Linux上要59秒,在我的服务器上只要15秒就能解出来,那这个最新的awk版应该10秒左右就可以解出来了!


damcool 发表于 2014-09-19 21:22
来点刺激的,AWK版进入最快行列,效率几乎又提高了一倍。
encrypt.awk.shencrypt.awkOutput

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
23 [报告]
发表于 2014-09-20 11:53 |显示全部楼层
本帖最后由 bikkuri 于 2014-09-20 14:42 编辑

我还有一个问题,为什么awk的END部分的输出不会被sh的print当成编码内容输出呢?
如果是这样的话,能不能加上一个进度条功能呢?

Suzhou.mp3 |==========>                                                                                           |          30%   [280724/935748]Bytes  2365B/s  in 11s
......
Suzhou.mp3 |==================================================|        100%   [935748/935748]Bytes  2592B/s  in 42s



damcool 发表于 2014-09-19 21:22
来点刺激的,AWK版进入最快行列,效率几乎又提高了一倍。
encrypt.awk.shencrypt.awkOutput

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
24 [报告]
发表于 2014-09-21 00:41 |显示全部楼层
哦,那好吧,我是觉得如果有个进度条,看起来一直有在跑,感觉反而好像快一些。
没有任何输出干等几十秒反而觉得慢。。。

damcool 发表于 2014-09-20 21:11
你觉得好不容易弄上去的速度,被这些花哨的东西给拖累不值得。

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
25 [报告]
发表于 2014-09-22 19:47 |显示全部楼层
太感谢了!🙏!

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
26 [报告]
发表于 2014-09-25 14:21 |显示全部楼层
本帖最后由 bikkuri 于 2014-09-25 14:21 编辑

进一步测试发现最新的awk版本(无进度条版本)在Linux下可以正常运行,但是在busybox下执行的结果还是不正确。
我对您的代码做了以下修改以适应密文文件的数据结构:
  1. **************************************************************
  2. #!/bin/sh
  3. # HCT Fast Awk Version (2014-09-20)
  4. file=$1
  5. #file=NJS-2A72-01_20120516-1650.dmp
  6. #file information as below:
  7. #00000000-0000012F: Padding
  8. #00000130-00000133: key0 (initial decore_key=xor(key0,0xdeadbeef))
  9. #00000134-000001FF: Padding
  10. #00000200-        : Encrypted contents
  11. #last 4 bytes:      Length of the encrypted file

  12. ord="3:2:1:4"
  13. #decore_key=$(hexdump -ve "4/1 \"%d \" \"\n\"" $file|sed -n 77p|awk -vl=$length 'BEGIN{x=x+0}{for(i=1;i<=l;i++)k[i]=$i*256+k[i-1]}END{printf "%08X",xor(k[4],strtonum("0xdeadbeef")}')
  14. decore_key=$(hexdump -ve "4/1 \"%d \" \"\n\"" $file|sed -n 77p|awk '{for(i=1;i<=4;i++)k[i]=k[i-1]*256+$i}END{t=xor(k[4],strtonum("0xdeadbeef"));for(i=1;i<6;i++){r[i]=t%256;t=int(t/256)};printf"00";for(i=1;i<6;i++)printf ":%02X",r[6-i]}')
  15. file_length=$(hexdump -ve "4/1 \"%d \" \"\n\"" $file|tail -n 1|awk '{for(i=1;i<=4;i++)k[i]=k[i-1]*256+$i}END{print k[4]}')
  16. length=4

  17. encore(){
  18. local out=0;
  19. for char in $(awk -v ord="$ord" -v key="$1" -v l=$length -v ka="0x41C64E6D" -v kb="0x3039" -v kc="0x80000000" 'function mod(p){return (p%256)}function div(p){return int(p/256)}function str_val(str,ret,chars,n,i,k,c){if(str ~ /^0[0-7]*$/){n=length(str);ret=0;for(i=1;i<=n;i++){c=substr(str,i,1);if((k=index("01234567",c))>0)k--;ret=ret*8+k}}else if(str ~ /^0[xX][[:xdigit:]]+/){str=substr(str,3);n=length(str);ret=0;for(i=1;i<=n;i++){c=substr(str,i,1);c=tolower(c);if((k=index("0123456789",c))>0)k--;else if((k=index("abcdef",c))>0) k+=9;ret=ret*16+k}}else if(str ~ /^[-+]?([0-9]+([.][0-9]*([Ee][0-9]+)?)?|([.][0-9]+([Ee][-+]?[0-9]+)?))$/){ret=str+0}else ret="NOT-A-NUMBER";return ret}function hex_ary(p,ary){p=str_val(p);ary="";while(p>0){ary=sprintf("%s:%d",ary,mod(p));p=div(p)}ary=substr(ary,2);return ary}function b_mul(a,b,c,i,j,m,n){m=length(a);n=length(b);for(i=1;i<=m;i++) for(j=1;j<=n;j++){c[i+j-1]+=a[i]*b[j];c[i+j]+=div(c[i+j-1]);c[i+j-1]=mod(c[i+j-1])}for(i=length(c);c[i]<1&&i>1;i--) delete c[i]}BEGIN{split(key,ks,":");split(ord,o,":");for(i=1;i<=l;i++) k[i]=str_val(sprintf("%s%s","0x",ks[length(ks)+1-o[i]]));split(hex_ary(ka),a,":");split(hex_ary(kb),b,":");split(hex_ary(kc),c,":");h=l;la=length(a);lb=length(b);lc=length(c);h=(h<la)?la:h;h=(h<lb)?lb:h;h=(h<lc)?lc:h;ta=str_val(ka);tb=str_val(kb);tc=str_val(kc)}{for(i=1;i<=NF;i++) printf "%02X ",xor(k[i],$i);if(NF<l) exit;tk=0;for(i=l;i>0;i--) tk=tk*256+k[o[i]];delete t;delete d;for(i=1;i<=2*h;i++) t[i]=(i>lb)?0:b[i];for(i=1;i<=l;i++) d[i]=k[o[i]];b_mul(d,a,t);delete p;tp=int((tk*ta+tb)/tc);i=1;while(tp>0){p[i++]=mod(tp);tp=div(tp)};delete q;b_mul(p,c,q);m=length(q);for(i=1;i<=m;i++){t[i]-=q[i];t[i+1]-=(t[i]<0);t[i]=mod(t[i]+256)}for(i=length(t);t[i]<1&&i>1;i--) delete t[i];for(i=1;i<=l;i++) k[o[i]]=t[i];}'); do if [ $out -lt $file_length ]; then printf "\\x$char";let out+=1; else break;fi; done
  20. }

  21. hexdump -ve "$length/1 \"%d \" \"\n\"" $file|sed '1,128d;$d'|encore $decore_key > $file.gz
  22. gzip -cd $file.gz > $file.txt
  23. **************************************************************
复制代码
然后分别在标准Linux和Busybox上对同一个668K大小的密文文件进行解码:
首先出场的是身手矫健的标准Linux,他仅仅花了50秒就完成解码,并从解码出来的gz文件中解压出了正确的txt原始明文文件。
  1. [box@cloud1:hct]$ date;./hct3.sh N7M3-E-902_ess.ts1;date
  2. Thu Sep 25 14:01:14 CST 2014
  3. Thu Sep 25 14:02:04 CST 2014
  4. [box@cloud1:hct]$ ls -l N7M3-E-902_ess.ts1*
  5. -rw-r--r-- 1 box cloud1  668592 Jun 19  2013 N7M3-E-902_ess.ts1
  6. -rw-r--r-- 1 box cloud1  668076 Sep 25 14:02 N7M3-E-902_ess.ts1.gz
  7. -rw-r--r-- 1 box cloud1 8075252 Sep 25 14:02 N7M3-E-902_ess.ts1.txt
复制代码
然后登场的是身材娇小的Busybox,她面对区区600多K的密文文件竟显得一筹莫展,足足花了10分47秒才完成解码,但是解码的结果是错误的,从解码出来的gz文件无法解压出正确的txt原始明文文件。
  1. root@kbox:/tmp/test# date;./hct3.sh N7M3-E-902_ess.ts1 ;date
  2. Thu Sep 25 13:48:18 UTC 2014
  3. Thu Sep 25 13:59:05 UTC 2014
  4. root@kbox:/tmp/test#
  5. root@kbox:/tmp/test# l
  6. -rw-r--r--    1 root     root        668592 Sep 25 13:47 N7M3-E-902_ess.ts1
  7. -rw-r--r--    1 root     root        668076 Sep 25 13:59 N7M3-E-902_ess.ts1.gz
  8. -rw-r--r--    1 root     root             0 Sep 25 13:59 N7M3-E-902_ess.ts1.txt
  9. -rwxr-xr-x    1 root     root          2884 Sep 25 13:47 hct3.sh
  10. root@kbox:/tmp/test#
复制代码
然后我们来对比一下解码出来的gz文件的内容:
  1. [box@cloud1:~]$ head -10 busybox.dump
  2. 00000000  ad 06 46 5a 68 1e 6f 1d  74 f4 90 2d 70 37 de 5e  |..FZh.o.t..-p7.^|
  3. 00000010  3c ce 04 64 fd b3 4b fb  0f eb 48 3b 8f f9 e5 62  |<..d..K...H;...b|
  4. 00000020  39 ff e1 3a 76 c3 11 bc  67 26 e0 0e cb 32 1d 28  |9..:v...g&...2.(|
  5. 00000030  38 a1 e4 40 69 39 49 b4  d6 13 3f 9e 4c 19 94 2d  |8..@i9I...?.L..-|
  6. 00000040  08 f6 45 6a 8a e0 60 1b  38 83 39 7f 01 2a 4d 0a  |..Ej..`.8.9..*M.|
  7. 00000050  45 9c ac 19 fc 70 b2 43  45 23 15 56 05 b2 df bf  |E....p.CE#.V....|
  8. 00000060  4c c8 d9 fe 75 d3 41 93  4f 74 dc 14 74 70 85 6e  |L...u.A.Ot..tp.n|
  9. 00000070  a6 7e 9a fb a9 89 4e db  ee 5d 51 84 37 b0 cb 7a  |.~....N..]Q.7..z|
  10. 00000080  45 fe ea 14 4f de ac dc  ce 33 fb b7 b2 6e 61 e8  |E...O....3...na.|
  11. 00000090  94 f0 d5 90 b0 bf b2 7a  92 23 47 6a 06 a2 7a c0  |.......z.#Gj..z.|
  12. [box@cloud1:~]$ head -10 linux.dump
  13. 00000000  1f 8b 08 00 00 00 00 00  00 03 ec 5a 6d 6f db 38  |...........Zmo.8|
  14. 00000010  12 fe 5e 20 ff 81 c0 a1  d7 e4 20 5b af 96 64 01  |..^ ...... [..d.|
  15. 00000020  b7 07 c7 2f a9 af 76 ec  b5 9c f4 0e 28 b0 a0 25  |.../..v.....(..%|
  16. 00000030  da d1 56 16 05 51 4a ec  fd 70 bf fd 86 94 2d 4b  |..V..QJ..p....-K|
  17. 00000040  8a 13 bb 7b c9 61 3f 2c  9b b4 95 38 7c 66 38 7c  |...{.a?,...8|f8||
  18. 00000050  66 f8 a6 61 b4 a4 c9 1a  a7 01 8d 10 66 88 2e d1  |f..a........f...|
  19. 00000060  d7 7e 0f fd f3 ee 16 a9  6d a4 98 4e ab e5 a8 3a  |.~......m..N...:|
  20. 00000070  d2 14 f8 eb 6e de bd f8  70 f1 e1 b5 7a e7 e2 43  |....n...p...z..C|
  21. 00000080  77 34 44 5d ba 5e e3 c8  77 d0 27 b2 09 52 84 c3  |w4D].^..w.'..R..|
  22. 00000090  f0 13 6f f9 83 6d d9 03  7d 42 8f 24 61 60 1b b4  |..o..m..}B.$a`..|
复制代码
我们可以看到busybox错得很离谱。从第一个字节就错掉了而且几乎没有一个字节是对的。
是不是有哪个awk的内建函数在busybox上不支持所以导致了这样的结果呢?

回复 55# damcool


   

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
27 [报告]
发表于 2014-09-25 15:52 |显示全部楼层
那应该就是我修改的部分里的strtonum内建函数busybox不支持导致解码错误了。
如果不用strtonum函数,有什么Linux和busybox通用的办法得到decore_key呢?
您的代码我基本上没有改,只是在外面加了个壳。

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
28 [报告]
发表于 2014-09-25 16:35 |显示全部楼层
本帖最后由 bikkuri 于 2014-09-25 16:54 编辑

因为解码的初始密码key0被存放在密文文件的偏移0x0130-0133的位置。
decore_key=xor(key0,0xdeadbeef) 是用来解码的第一个key。
然后从密文文件的偏移0x0200一直到倒数第5个字节就是要解码的密文,要对这一段密文解码后产生gz文件。
密文文件的最后4个字节是密文的长度。虽然对密文解码出来的长度应该是文件总长-516字节,
但是实际的gz文件的长度可能会有一两个字节的偏差,所以实际产生gz文件的长度以这4个字节指定的长度为准。
我为了得到file_length/decore_key所以每次读一遍文件获取一个变量值。
sed是用来获取必要的行啊?
比如hexdump -ve "4/1 \"%d \" \"\n\"" $file|sed -n 77p就是把文件以每行4个字节输出,sed -n 77p是取第77行,也就是存放在偏移0x0130-0133位置的key0。
sed '1,128d;$d'是删除第1-128行和最后1行,也就是从偏移0x0200一直到倒数第5个字节就是要解码的密文。
如果不用sed,应该也可以用awk的NR=77或者NR>128&&NR<FNR吧。


如果不用strtonum函数,我参照您的代码用以下命令可以在busybox上得到正确的decore_key:
  1. root@sbox:/tmp/test# decore_key=$(hexdump -ve "4/1 \"%d \" \"\n\"" $file|sed -n 77p|awk -v nb="0xdeadbeef" 'function mod(p){return (p%256)}function div(p){return int(p/256)}function str_val(str,ret,chars,n,i,k,c){if(str ~ /^0[0-7]*$/){n=length(str);ret=0;for(i=1;i<=n;i++){c=substr(str,i,1);if((k=index("01234567",c))>0)k--;ret=ret*8+k}}else if(str ~ /^0[xX][[:xdigit:]]+/){str=substr(str,3);n=length(str);ret=0;for(i=1;i<=n;i++){c=substr(str,i,1);c=tolower(c);if((k=index("0123456789",c))>0)k--;else if((k=index("abcdef",c))>0) k+=9;ret=ret*16+k}}else if(str ~ /^[-+]?([0-9]+([.][0-9]*([Ee][0-9]+)?)?|([.][0-9]+([Ee][-+]?[0-9]+)?))$/){ret=str+0}else ret="NOT-A-NUMBER";return ret}function hex_ary(p,ary){p=str_val(p);ary="";while(p>0){ary=sprintf("%s:%d",ary,mod(p));p=div(p)}ary=substr(ary,2);return ary}{for(i=1;i<=4;i++)k[i]=k[i-1]*256+$i;split(hex_ary(nb),n,":");tn=str_val(nb)}END{t=xor(k[4],tn);for(i=1;i<6;i++){r[i]=t%256;t=int(t/256)};printf"00";for(i=1;i<6;i++)printf ":%02X",r[6-i]}')
  2. root@sbox:/tmp/test# echo $decore_key
  3. 00:00:5A:B2:8D:4E
  4. root@sbox:/tmp/test#
复制代码
这就证明了str_val在busybox上也是正常工作的。问题就出在strtonum上面。
但是有更简单的取代strtonum的方法吗?

damcool 发表于 2014-09-25 16:05
看不懂为什么要把文件一遍一遍的读出来,不懂file_length/decore_key是干吗的?不懂sed掺合进来干吗?各种不 ...

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
29 [报告]
发表于 2014-09-25 17:11 |显示全部楼层
本帖最后由 bikkuri 于 2014-09-25 17:39 编辑

找到了,用这条命令可以简单地得到decore_key:
  1. decore_key=$(hexdump -ve "4/1 \"%d \" \"\n\"" $file|sed -n 77p|awk -v sa=3735928559 '{for(i=1;i<=4;i++)k[i]=k[i-1]*256+$i}END{t=xor(k[4],sa);for(i=1;i<6;i++){r[i]=t%256;t=int(t/256)};printf"00";for(i=1;i<6;i++)printf ":%02X",r[6-i]}')
复制代码
用这条命令替代strtonum以后可以在busybox上得到正确的decore_key了,但是再次执行解码,解出来的还是错误的,而且解码的结果和之前没有得到正确的decore_key时的结果一模一样。。。

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
30 [报告]
发表于 2014-09-25 19:49 |显示全部楼层
但是我运行63楼的程序可以得到正确结果啊?
63楼的程序里含有str_val函数,所以应该是正确工作的吧?

damcool 发表于 2014-09-25 18:25
调试过str_val函数没?在你的busybox上运行这个函数有问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP