[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何实现字典加密思路?

我有一段文字:
  “批处理是一种简化的脚本语言“

要加密下,想这样加密:
  从一篇大概能包含上面字符的文件中,转换成我上面段文字。就是所谓的明文加密吧?
  例:
     1.txt 一个文件是加密密码字典。
  1.txt的第1行第3个是:批
  1.txt的第3行第15个是:处
  1.txt的第5行第13个是:理
  1.txt的第12行第15个是:是
  1.txt的第2行第14是:一
  1.txt的第5行第17是:种
  1.txt的第34行第16是:简
  1.txt的第13行第23:化
  1.txt的第78行第13:的
  1.txt的第123行第23:脚
  1.txt的第98行第13:本
  1.txt的第12行第18是:语
  1.txt的第34行第20:言

转换后的明文密码是:
1,3 3,15 5,13 12,15 2,14 5,17 34,16 13,23 78,13 123,23 98,13 12,18 34,20

如果不限于用dos批命令,我想可以用这样原理来做:
首先加密软件载入txt密码字典到内存:
比如:一个 1.txt字典文件,含这样内容:
【白腹树袋熊的学名来自两个希腊字,杜鹃树和兔子。
作为一种已知的生物,这种树居有袋目哺乳动物,一生大部分时间在地上度过。
它们在野外生存数量很少,属濒危物种。】

那么在内存中这样描述:
白=1,1 (第一行第一个)
腹=1,2 (第一行第二个)
树=1,3 (第一行第三个)
。。。
作=2,1 (第二行第一个)
。。。
后面重复的字符忽略编码,也就是已经编码的字符再次遇到不再编码,比如第二行的“的”。

在加密的时候,先调入字典入内存,然后调入需要加密的文字入内存,2相比较,生成1,12.2,15.3,22.12,14 之类的加密码文本输出电脑。

还有个设想:
如果觉得一串数字看了碍眼,可以把字典内容“倒转编码”,再次用数字串对比编码生成汉字输出电脑。当然这些汉字肯定是语义昏乱~~~

TOP

本帖最后由 wc726842270 于 2011-3-23 13:17 编辑

个人感觉思路有些像GB2312的编码机制,算上一种伪代码吧
  1. @echo off&setlocal enabledelayedexpansion 2>nul 3>nul
  2. (more +13 %0) >#1#.txt
  3. color 0a
  4. set /a a=0,b=0
  5. for /f "delims=" %%i in (#1#.txt) do call :1  %%i
  6. echo !2,7! !2,18!!3,8!!3,22!!3,2! !2,5!!3,8!!3,6! !1,0!!1,1!!1,2!
  7. del #1#.txt
  8. pause>nul&exit
  9. :1
  10. set /a a+=1
  11. set str=%1
  12. :2
  13. if "!str:~%b%,1!" neq "" (set %a%,%b%=!str:~%b%,1!&&set /a b+=1&goto :2) else set b=0
  14. 批处理是一种简化的脚本语言
  15. QWERTYUIOPASDFGHJKLZXCVBNM
  16. qwertyuiopasdfghjklzxcvbnm
复制代码
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

处理的有些问题,不过可以把
“批处理是一种简化的脚本语言

QWERTYUIOPASDFGHJKLZXCVBNM

qwertyuiopasdfghjklzxcvbnm”弄到最后,或用注释的方法,或用NUL,再做相应的处理。但是在这里影向并不是很大
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

本帖最后由 yangyf34 于 2011-3-22 20:30 编辑
如果不限于用dos批命令,我想可以用这样原理来做:
首先加密软件载入txt密码字典到内存:
比如:一个 1.txt字典文件,含这样内容:
【白腹树袋熊的学名来自两个希腊字,杜鹃树和兔子。
作为一种已知的生物,这 ...
yangyf34 发表于 2011-3-22 18:07


回复wc726842270 大哥,
  比如我接着2楼例子:
  1.txt字典文件,含这样内容:
【白腹树袋熊的学名来自两个希腊字,杜鹃树和兔子。
作为一种已知的生物,这种树居有袋目哺乳动物,一生大部分时间在地上度过。
它们在野外生存数量很少,属濒危物种。】

我有一句话: "希腊时间是"  想编码加密.
加密过程:  
希=1,13
腊=1,14
时=2,28
间=2,29
是=是     (字典无此字)
加密结果:
1,13.1,14.2,28.2,29.是

  倒转字典:
白腹树袋熊的学名来自两个希腊字,杜鹃树和兔子。
作为一种已知的生物,这种树居有袋目哺乳动物,一生大部分时间在地上度过。
它们在野外生存数量很少,属濒危物种。

为:
它们在野外生存数量很少,属濒危物种。
作为一种已知的生物,这种树居有袋目哺乳动物,一生大部分时间在地上度过。
白腹树袋熊的学名来自两个希腊字,杜鹃树和兔子。

再次"倒转字典"编码过程:
1,13=属
1,14=濒
2,28=时
2,29=间
是=是     (字典无此字)
再次"倒转字典"编码结果:
属濒时间是

最终就是:
"希腊时间是" 加密成:"属濒时间是"  (根据1.txt字典文件)

"属濒时间是" 解密成:"希腊时间是"  (根据1.txt字典文件)

TOP

思路:
把字典一行行定义成变量,通过变量偏移很容易解决,正算或者逆算都没难度,不过字典大时可能出问题。
字典要是很大,还是用findstr提取所需的数行,再进行变量偏移,这样反而比定义变量快些。

TOP

不是吧,晕了
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

如果需要加密的文本不长,那么findstr /o 可以解决,速度也可以。
如果加密文本长,字典又大,那么还是用别的加密吧。

TOP

返回列表