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

回复 10楼 的帖子

测试如下
  1. 1、加密  2、解密
  2. 1
  3. 请输入明文 :bbsbathome
  4. 请输入密钥 :batch
  5. dcmeiviipm
复制代码
而正确结果应该是
  1. 请输入密匙:batch
  2. 加密明文:bbsbathome
  3. C B L D H U H H O L
复制代码
心绪平和,眼藏静谧。

TOP

将方阵从右向左用
  1. @echo off&setlocal enabledelayedexpansion
  2. echo 1、加密  2、解密
  3. set /p bs=
  4. set var=1
  5. for %%i 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 (
  6.     set ve=%%i
  7.     set "%%i=!var!"
  8. set "!var!=!ve!"
  9. set /a var=!var!+1
  10. )
  11. goto %bs%
  12. :1
  13. set /p vaa=请输入明文 :
  14. goto ss
  15. :2
  16. set /p vaa=请输入密文 :
  17. :ss
  18. set /p vab=请输入密钥 :
  19. :st
  20. set va1=%vaa:~0,1% &set vaa=%vaa:~1%
  21. set va2=%vab:~0,1% &set vab=%vab:~1%%vab:~0,1%
  22. goto %bs%%bs%
  23. :11
  24. set /a vav=%va2%+%va1%
  25. if %vav% gtr 26 set /a vav=%vav%-26
  26. goto js
  27. :22
  28. set /a vav=%va1%-%va2%
  29. if %vav% lss 1 set /a vav=%vav%+26
  30. :js
  31. set /p=!%vav%!<nul
  32. if not "%vaa%"=="" goto st
  33. pause >nul
复制代码
虽然有些地方和batman相似但绝非抄袭

[ 本帖最后由 mkl 于 2008-8-23 13:57 编辑 ]

TOP

到底是什么跟什么啊,一头雾水

TOP

厉害呀,我看都看不起懂

TOP

解密程序:
  1. @echo off&setlocal enabledelayedexpansion
  2. rem 生成方阵
  3. set "codes=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"
  4. set "code=%codes: =%"
  5. for %%i in (%codes%) do set /a n+=1&set "_!n!=%%i"
  6. set "_a=%code%"
  7. for /l %%i in (1,1,25) do (
  8.     set "code=!code:~1!!code:~,1!"
  9.     set  "_!code:~,1!=!code!"
  10. )
  11. echo.&set /p str=请输入密文:
  12. echo.&set /p pss=请输入密匙:
  13. echo.&set /p=解密的明文:<nul
  14. :again
  15. set "a1=%str:~,1%"&set "a2=%pss:~,1%"
  16. set "str=%str:~1%"&set "pss=%pss:~1%%a2%"
  17. set "var=!_%a2%!"&set "n=0"&call :lp
  18. if defined str goto again
  19. pause>nul&goto :eof
  20. :lp
  21. set "a=%var:~,1%"&set /a n+=1
  22. if /i "%a%" equ "%a1%" set /p=!_%n%!<nul&goto :eof
  23. set "var=%var:~1%"
  24. goto lp
复制代码

[ 本帖最后由 Batcher 于 2009-5-1 20:57 编辑 ]
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
***共同提高***

TOP

set "pss=%pss:~1%%a2%"
高!
心绪平和,眼藏静谧。

TOP

原帖由 pusofalse 于 2008-7-30 02:59 发表
我出这道题的初衷是希望写出代码之后可以作为一个实用的加密文本的工具,然后再由自己写解密工具,这是挺好的一件事情。
维热纳尔的加密意义不仅在于加密一个单词或一句英文,而是即使加密很长的一段文章也不会被频 ...

确实是没考虑周全,要通用也容易,只要按生成方阵的办法来循环密文就可以了,已修改于上。
***共同提高***

TOP

我出这道题的初衷是希望写出代码之后可以作为一个实用的加密文本的工具,然后再由自己写解密工具,这是挺好的一件事情。
维热纳尔的加密意义不仅在于加密一个单词或一句英文,而是即使加密很长的一段文章也不会被频率破解。

既然是这样,那batman兄的代码也是不通用了,因为一个文本内容的长度问题。。。而密匙的长度就只有那几位,乘以10也不能保证多于明文的长度。

当然如果作为一个工具来讲,要想加密正确,要保证明文中只有字母,空格也不得包括。
心绪平和,眼藏静谧。

TOP

batman兄的代码没有密匙,密文只是通过右移一位而来的。 另外有一处错误,是导致每次都右移一位的根本所在。
for %%i in (codes) do (
      set /a n+=1
      if /i "%%i" equ "%1" goto next
)

维热纳尔方阵加密出的密文非常牢固,要解开,必须要有双方协定好的密匙(可以是个有意义的英文单词)。
可能是我说的太模糊了,已修正。

[ 本帖最后由 pusofalse 于 2008-7-30 02:38 编辑 ]
心绪平和,眼藏静谧。

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. rem 生成方阵
  3. set "codes=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"
  4. set "code=%codes: =%"
  5. set "_a=%code%"
  6. for /l %%i in (1,1,25) do (
  7.     set "code=!code:~1!!code:~,1!"
  8.     set  "_!code:~,1!=!code!"
  9. )
  10. echo.&set /p str=请输入明文:
  11. echo.&set /p pss=请输入密匙:
  12. echo.&set /p=生成的密文:<nul
  13. :again
  14. set "a1=%str:~,1%"&set "a2=%pss:~,1%"
  15. set "str=%str:~1%"&set "pss=%pss:~1%%a2%"
  16. call :lp
  17. if defined str goto again
  18. pause>nul&goto :eof
  19. :lp
  20. for %%i in (%codes%) do (
  21.       set /a n+=1
  22.       if /i "%%i" equ "%a1%" goto next
  23. )
  24. :next
  25. set /a n-=1
  26. set "var=!_%a2%!"
  27. set "var=!var:~%n%,1!"
  28. set /p=%var% <nul&set "n=0"
复制代码

[ 本帖最后由 Batcher 于 2009-5-1 20:56 编辑 ]
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
1

评分人数

***共同提高***

TOP

返回列表