[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
另一种思路,不生成方阵,只计算索引数,加解密支持空格.
密匙:key with space
文本:this is a simple test this is a simple test this is a simple test
模式(1.加密[默认] 2.解密):1
结果:DMGSWRLHASHJPUWJYTAAMHT YTCNCEZ ORFXLXPUHXDERHEATQSSQAVNXUJEWBY T
请按任意键继续. . .
密匙:key with space
文本:DMGSWRLHASHJPUWJYTAAMHT YTCNCEZ ORFXLXPUHXDERHEATQSSQAVNXUJEWBY T
模式(1.加密[默认] 2.解密):2
结果:THIS IS A SIMPLE TEST THIS IS A SIMPLE TEST THIS IS A SIMPLE TEST
请按任意键继续. . .
  1. cls&@echo off&SETLOCAL ENABLEDELAYEDEXPANSION
  2. set "str=. ABCDEFGHIJKLMNOPQRSTUVWXYZ" & set sMAX=27
  3. :main
  4. set/p keystring=密匙:
  5. set/p string=文本:
  6. set/p mode=模式(1.加密[默认] 2.解密):
  7. set/p=结果:<nul
  8. set mode=%mode%1
  9. set mode=%mode:~0,1%
  10. call :getkeyword
  11. set/a i=0,l=1
  12. :loop
  13. call :index !string:~%i%,1!
  14. if %mode% equ 2 (
  15. set/a idx=index+sMAX-offset%l%
  16. ) else (
  17. set/a idx=index+offset%l%
  18. )
  19. if %idx% gtr %sMAX% set/a idx%%=sMAX
  20. set/p=!str:~%idx%,1!<nul
  21. set/a i+=1,l= l %% keylength + 1
  22. if not "!string:~%i%,1!"=="" goto:loop
  23. echo.&pause&goto:main
  24. :getkeyword
  25. set i=0
  26. :lp
  27. if "!keystring:~%i%,1!"=="" goto:eof
  28. call :index !keystring:~%i%,1!
  29. set/a i+=1
  30. set/a offset!i!=%index%-1,keylength=i
  31. goto:lp
  32. :index
  33. set index=1
  34. if "%1"=="" goto:eof
  35. for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do if %1 geq %%a set/a index+=1
复制代码

[ 本帖最后由 dishuo 于 2008-8-23 15:35 编辑 ]
2

评分人数

高手=发现问题^分析问题^解决问题

TOP

返回列表