亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 3915 | 回復(fù): 18
打印 上一主題 下一主題

[文本處理] 文件加密算法求助 [復(fù)制鏈接]

論壇徽章:
18
辰龍
日期:2014-05-21 21:01:4115-16賽季CBA聯(lián)賽之深圳
日期:2016-12-23 13:51:3815-16賽季CBA聯(lián)賽之北控
日期:2016-11-28 18:26:3815-16賽季CBA聯(lián)賽之佛山
日期:2016-11-03 11:18:5815-16賽季CBA聯(lián)賽之遼寧
日期:2016-07-10 16:09:4115-16賽季CBA聯(lián)賽之江蘇
日期:2016-02-20 23:09:202015亞冠之塔什干棉農(nóng)
日期: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
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2016-01-05 15:52 |只看該作者 |倒序瀏覽
30可用積分
本帖最后由 bikkuri 于 2016-01-05 16:00 編輯

大家好!
我有一個問題向大家請教!

假如有兩個二進(jìn)制文件a和b,其中a為明文文件(文件長度為x字節(jié)),b為密匙文件(文件長度為y字節(jié))。

希望用以下算法用密匙文件對明文文件進(jìn)行加密:
  1. 明文文件a        運算        密鑰文件b
  2. 第一字節(jié)                XOR        最后一字節(jié)
  3. 第二字節(jié)                XOR        倒數(shù)第二字節(jié)
  4. 第n字節(jié)                XOR        第y-((n-1) mod y)字節(jié) (其中0<n<y+1)
  5. ......
  6. 第y字節(jié)                XOR        第一字節(jié)
  7. 第y+1字節(jié)        XOR        最后一字節(jié)
  8. ...
  9. 第x字節(jié)                XOR        第y-((x-1) mod y)字節(jié)
復(fù)制代碼
希望大家?guī)兔τ胹hell腳本實現(xiàn)這個加密算法。
  1. cat a|file_xor b|file_xor b > c
  2. diff a c
復(fù)制代碼
明文文件a經(jīng)過兩次用同一個密鑰文件加密后得到的結(jié)果應(yīng)該和原來的明文文件相同。

謝謝大家!

最佳答案

查看完整內(nèi)容

回復(fù) 10# bikkuri run only, like as below:http://72891.cn/forum.php?mod=viewthread&tid=4190772&page=1#pid24467396

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [報告]
發(fā)表于 2016-01-05 15:52 |只看該作者
回復(fù) 10# bikkuri

run only, like as below:

http://72891.cn/forum.p ... ;page=1#pid24467396
   

論壇徽章:
12
IT運維版塊每日發(fā)帖之星
日期:2015-11-17 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-01-19 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-01-17 15:31:3915-16賽季CBA聯(lián)賽之上海
日期:2016-01-16 15:44:3015-16賽季CBA聯(lián)賽之浙江
日期:2016-01-15 20:38:1815-16賽季CBA聯(lián)賽之北京
日期:2016-01-09 14:30:15CU十四周年紀(jì)念徽章
日期:2016-01-07 12:31:5115-16賽季CBA聯(lián)賽之四川
日期:2016-01-01 11:49:1515-16賽季CBA聯(lián)賽之深圳
日期:2015-12-24 14:23:4115-16賽季CBA聯(lián)賽之山西
日期:2015-12-15 16:22:31技術(shù)圖書徽章
日期:2015-12-10 17:41:0015-16賽季CBA聯(lián)賽之北控
日期:2016-02-03 10:03:24
3 [報告]
發(fā)表于 2016-01-05 16:49 |只看該作者
  1. awk 'BEGIN{FS=OFS=""}NR==FNR{for(i=1;i<=NF;i++){a[++j]=$i};next}{for(i=1;i<=NF;i++){++k;$i=xor($i,a[k%j])}}1' b a
復(fù)制代碼

論壇徽章:
18
辰龍
日期:2014-05-21 21:01:4115-16賽季CBA聯(lián)賽之深圳
日期:2016-12-23 13:51:3815-16賽季CBA聯(lián)賽之北控
日期:2016-11-28 18:26:3815-16賽季CBA聯(lián)賽之佛山
日期:2016-11-03 11:18:5815-16賽季CBA聯(lián)賽之遼寧
日期:2016-07-10 16:09:4115-16賽季CBA聯(lián)賽之江蘇
日期:2016-02-20 23:09:202015亞冠之塔什干棉農(nóng)
日期: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
4 [報告]
發(fā)表于 2016-01-05 17:11 |只看該作者
謝謝您的回復(fù)!
不過顯然加密處理后的結(jié)果是錯誤的。
  1. [root@hp8:~/newtest]# date > a
  2. [root@hp8:~/newtest]# date +%s > b
  3. [root@hp8:~/newtest]# ls -l
  4. total 8
  5. -rw-r--r-- 1 root root 29 Jan  5 17:09 a
  6. -rw-r--r-- 1 root root 11 Jan  5 17:09 b
  7. [root@hp8:~/newtest]# awk 'BEGIN{FS=OFS=""}NR==FNR{for(i=1;i<=NF;i++){a[++j]=$i};next}{for(i=1;i<=NF;i++){++k;$i=xor($i,a[k%j])}}1' b a
  8. 14519849851521914131101451118515
  9. [root@hp8:~/newtest]# awk 'BEGIN{FS=OFS=""}NR==FNR{for(i=1;i<=NF;i++){a[++j]=$i};next}{for(i=1;i<=NF;i++){++k;$i=xor($i,a[k%j])}}1' b a > c
  10. [root@hp8:~/newtest]# ls -l
  11. total 12
  12. -rw-r--r-- 1 root root 29 Jan  5 17:09 a
  13. -rw-r--r-- 1 root root 11 Jan  5 17:09 b
  14. -rw-r--r-- 1 root root 33 Jan  5 17:10 c
  15. [root@hp8:~/newtest]# awk 'BEGIN{FS=OFS=""}NR==FNR{for(i=1;i<=NF;i++){a[++j]=$i};next}{for(i=1;i<=NF;i++){++k;$i=xor($i,a[k%j])}}1' b c > d
  16. [root@hp8:~/newtest]# ls -l
  17. total 16
  18. -rw-r--r-- 1 root root 29 Jan  5 17:09 a
  19. -rw-r--r-- 1 root root 11 Jan  5 17:09 b
  20. -rw-r--r-- 1 root root 33 Jan  5 17:10 c
  21. -rw-r--r-- 1 root root 35 Jan  5 17:10 d
  22. [root@hp8:~/newtest]#
復(fù)制代碼
回復(fù) 2# sync_1521


   

論壇徽章:
12
IT運維版塊每日發(fā)帖之星
日期:2015-11-17 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-01-19 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-01-17 15:31:3915-16賽季CBA聯(lián)賽之上海
日期:2016-01-16 15:44:3015-16賽季CBA聯(lián)賽之浙江
日期:2016-01-15 20:38:1815-16賽季CBA聯(lián)賽之北京
日期:2016-01-09 14:30:15CU十四周年紀(jì)念徽章
日期:2016-01-07 12:31:5115-16賽季CBA聯(lián)賽之四川
日期:2016-01-01 11:49:1515-16賽季CBA聯(lián)賽之深圳
日期:2015-12-24 14:23:4115-16賽季CBA聯(lián)賽之山西
日期:2015-12-15 16:22:31技術(shù)圖書徽章
日期:2015-12-10 17:41:0015-16賽季CBA聯(lián)賽之北控
日期:2016-02-03 10:03:24
5 [報告]
發(fā)表于 2016-01-05 17:41 |只看該作者
回復(fù) 3# bikkuri
  1. test@server ~> cat a
  2. 0101010101111111111
  3. 0101010
  4. 111
  5. test@server ~> cat b
  6. 010101
  7. 10
  8. test@server ~> awk 'BEGIN{FS=OFS=""}NR==FNR{for(i=1;i<=NF;i++){a[++j]=$i};next}{for(i=1;i<=NF;i++){++k;$i=xor($i,a[k%j])}}1' b a
  9. 0000001100101001101
  10. 1110011
  11. 101
  12. test@server ~> awk 'BEGIN{FS=OFS=""}NR==FNR{for(i=1;i<=NF;i++){a[++j]=$i};next}{for(i=1;i<=NF;i++){++k;$i=xor($i,a[k%j])}}1' b a >c
  13. test@server ~> awk 'BEGIN{FS=OFS=""}NR==FNR{for(i=1;i<=NF;i++){a[++j]=$i};next}{for(i=1;i<=NF;i++){++k;$i=xor($i,a[k%j])}}1' b c >d
  14. test@server ~> cat d
  15. 0101010101111111111
  16. 0101010
  17. 111
  18. test@server ~>
復(fù)制代碼
要把文件搞成010101這種形式的吧?
   

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
6 [報告]
發(fā)表于 2016-01-05 18:16 |只看該作者
本帖最后由 jason680 于 2016-01-05 18:18 編輯

回復(fù) 1# bikkuri

Note: debug by yourself with busybox and awk null (ASCII 0) issue

$ awk 'BEGIN{RS="@#*#@";for(n=1;n<=255;n++)a[sprintf("%c",n)]=n}FNR==NR{y=length-1;for(n=1;n<=y;n++)b[n]=a[substr($0,n,1)];next}{x=length;s="";for(n=1;n<=x;n++)s=s sprintf("%c",xor(a[substr($0,n,1)],b[y-n%y]));printf("%s",s)}' b a  > a.x

$ awk 'BEGIN{RS="@#*#@";for(n=1;n<=255;n++)a[sprintf("%c",n)]=n}FNR==NR{y=length-1;for(n=1;n<=y;n++)b[n]=a[substr($0,n,1)];next}{x=length;s="";for(n=1;n<=x;n++)s=s sprintf("%c",xor(a[substr($0,n,1)],b[y-n%y]));printf("%s",s)}' b a.x  > c

$ diff a c

$ ls -l a b c
-rw-rw-r-- 1 jason jason 29 Jan  5 17:45 a
-rw-rw-r-- 1 jason jason 11 Jan  5 17:44 b
-rw-rw-r-- 1 jason jason 29 Jan  5 18:07 c

$ cat a b c
Tue Jan  5 17:45:03 CST 2016
1451987093
Tue Jan  5 17:45:03 CST 2016

   

論壇徽章:
18
辰龍
日期:2014-05-21 21:01:4115-16賽季CBA聯(lián)賽之深圳
日期:2016-12-23 13:51:3815-16賽季CBA聯(lián)賽之北控
日期:2016-11-28 18:26:3815-16賽季CBA聯(lián)賽之佛山
日期:2016-11-03 11:18:5815-16賽季CBA聯(lián)賽之遼寧
日期:2016-07-10 16:09:4115-16賽季CBA聯(lián)賽之江蘇
日期:2016-02-20 23:09:202015亞冠之塔什干棉農(nóng)
日期: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
7 [報告]
發(fā)表于 2016-01-06 13:03 |只看該作者
謝謝您的回復(fù)!
確實在Linux上您的程序可以得到正確的結(jié)果,但是在busybox上執(zhí)行出錯。
我研究一下看看在busybox上要怎么改。
另外您的程序中的RS="@#*#@"是什么意思。
好像從來沒有見過這種寫法,網(wǎng)上搜索了也沒找到。
和RS=“”有什么區(qū)別嗎?

回復(fù) 5# jason680


   

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
8 [報告]
發(fā)表于 2016-01-06 13:52 |只看該作者
回復(fù) 6# bikkuri

https://www.gnu.org/software/gawk/manual/gawk.html#Multiple-Line

4.8 Multiple-Line Records
...

You can achieve the same effect as ‘RS = ""’ by assigning the string "\n\n+" to RS. This regexp matches the newline at the end of the record and one or more blank lines after the record. In addition, a regular expression always matches the longest possible sequence when there is a choice (see Leftmost Longest). So, the next record doesn’t start until the first nonblank line that follows—no matter how many blank lines appear in a row, they are considered one record separator.
...



https://www.gnu.org/software/gawk/manual/gawk.html#gawk-split-records

4.1.2 Record Splitting with gawk

                                           RS = "\0" Is Not Portable
There are times when you might want to treat an entire data file as a single record. The only way to make this happen is to give RS a value that you know doesn’t occur in the input file. This is hard to do in a general way, such that a program always works for arbitrary input files.

You might think that for text files, the NUL character, which consists of a character with all bits equal to zero, is a good value to use for RS in this case:

BEGIN { RS = "\0" }  # whole file becomes one record?

gawk in fact accepts this, and uses the NUL character for the record separator. This works for certain special files, such as /proc/environ on GNU/Linux systems, where the NUL character is in fact the record separator. However, this usage is not portable to most other awk implementations.

Almost all other awk implementations19 store strings internally as C-style strings. C strings use the NUL character as the string terminator. In effect, this means that ‘RS = "\0"’ is the same as ‘RS = ""’. (d.c.)

It happens that recent versions of mawk can use the NUL character as a record separator. However, this is a special case: mawk does not allow embedded NUL characters in strings. (This may change in a future version of mawk.)

See Readfile Function, for an interesting way to read whole files. If you are using gawk, see Extension Sample Readfile, for another option.
   

論壇徽章:
18
辰龍
日期:2014-05-21 21:01:4115-16賽季CBA聯(lián)賽之深圳
日期:2016-12-23 13:51:3815-16賽季CBA聯(lián)賽之北控
日期:2016-11-28 18:26:3815-16賽季CBA聯(lián)賽之佛山
日期:2016-11-03 11:18:5815-16賽季CBA聯(lián)賽之遼寧
日期:2016-07-10 16:09:4115-16賽季CBA聯(lián)賽之江蘇
日期:2016-02-20 23:09:202015亞冠之塔什干棉農(nóng)
日期: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
9 [報告]
發(fā)表于 2016-01-06 14:13 |只看該作者
本帖最后由 bikkuri 于 2016-01-06 14:16 編輯

啊?原來RS="@#*#@"是用一個不可能出現(xiàn)的RS來把整個文件當(dāng)作一個Record。
但是如果要處理的文件就是程序本身的話,這個RS就會把文件分成兩個Record吧。
我覺得用RS=“$(md5sum $0|awk '{print$1}')”的話,也就是用文件的md5校驗和來做RS,就可以確保RS不會出現(xiàn)在文件里吧?

回復(fù) 7# jason680


   

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
10 [報告]
發(fā)表于 2016-01-06 16:56 |只看該作者
回復(fù) 8# bikkuri

>> ...但是如果要處理的文件就是程序本身的話...

說說你要做什么....
也可以只加密可打印字符(ASCII 32~126)
你說的我也曾做過...密碼缺省則用檔名
   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP