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

[文本处理] 批处理用维热纳尔方阵给文本加密

[复制链接]
发表于 2008-11-19 01:11:15 | 显示全部楼层
方法:把26位字母与1-26相应的数字对应起来,密文即为明文字母对应的数字与密钥字母对应的数字相加-1所对应的字母。
  1. @echo off&setlocal enabledelayedexpansion
  2. set "code=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"
  3. for %%i in (%code%) do (
  4.     set /a num+=1
  5.     set t!num!=%%i
  6.     set p%%i=!num!
  7. )
  8. :begin
  9. set /p text=请输入明文:&set /p key=请输入密钥:&set /p=密文:<nul
  10. :loop
  11. set "_text=%text:~,1%"&set "_key=%key:~,1%"
  12. set "text=%text:~1%"&set "key=%key:~1%%_key%"
  13. set /a n=!p%_text%!+!p%_key%!
  14. set /a n=!n!%%26-1
  15. set /p=!t%n%! <nul
  16. if defined text goto loop
  17. echo.&echo.&goto begin
复制代码
set "key=%key:~1%%_key%"一句借鉴了batman的,感觉好多种方法这种最简洁。
  1. 哦,好像和上楼的思想一样啊,不好意思啊,发表以后才仔细看。把标头去了!
复制代码

[ 本帖最后由 lhjoanna 于 2008-11-19 01:24 编辑 ]

评分

参与人数 1PB +10 收起 理由
pusofalse + 10

查看全部评分

发表于 2009-5-13 13:16:41 | 显示全部楼层
翻了一个不得了的帖子出来, 有很多东西可以学
发表于 2009-5-13 14:45:16 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. set "x=ABCDEFGHIJKLMNOPQRSTUVWXYZ"&set code=!x!&set "miwen="
  3. for /l %%a in (1 1 26) do (
  4.    set /a .!x:~0,1!=%%a
  5.    set code2=!code2! !x:~0,1!
  6.    set "x=!x:~1!"
  7. )
  8. set /p my=请输入密匙
  9. set /p mw=请输入明文
  10. for %%a in (!code2!) do set mw=!mw:%%a= %%a !
  11. for %%a in (!mw!) do (
  12.    if not defined my_ set "my_=!my!"
  13.    set /a yum=.!my_:~0,1!,w=.%%a-1
  14.    for %%i in (!yum!) do set "codex=!my_:~0,1!!code:~%%i!!code:~0,%%i!"
  15.    for %%i in (!w!) do set "miwen=!miwen!!codex:~%%i,1!"
  16.    set "my_=!my_:~1!"
  17. )
  18. echo 密文:  !miwen!
  19. pause
复制代码

评分

参与人数 2PB +8 技术 +1 收起 理由
Markting + 1 厉害!
pusofalse + 8 都是高手。

查看全部评分

发表于 2009-5-13 19:47:07 | 显示全部楼层

  1. @echo off&setlocal enabledelayedexpansion
  2. set x=ABCDEFGHIJKLMNOPQRSTUVWXYZ
  3. set miwen=&set yum=miwen
  4. for /l %%a in (0 1 25) do (
  5.    set /a n=%%a+1,#!x:~%%a,1!=n
  6.    set #!n!=!x:~%%a,1!
  7. )
  8. set /p my=请输入密匙
  9. set /p mw=请输入明文
  10. set m=0
  11. :lp
  12. set/a mm=m+99
  13. for /l %%a in (!m!,1,!mm!) do (
  14. for %%b in (!yum!) do (
  15.   set miwen=!miwen!!#%%b!
  16.   if "!mw:~%%a!" equ "" goto :ok
  17.   set /a "yum=(#!my:~0,1!+#!mw:~%%a,1!+24)%%26+1",m=%%a+1
  18.   set my=!my:~1!!my:~0,1!
  19. )
  20. )
  21. goto :lp
  22. :ok
  23. echo 密文:  !miwen!
  24. pause
复制代码

[ 本帖最后由 netbenton 于 2009-5-14 12:54 编辑 ]

评分

参与人数 1PB +8 收起 理由
pusofalse + 8 都是高手。

查看全部评分

发表于 2012-6-7 11:21:34 | 显示全部楼层
我来学习下
发表于 2012-6-8 13:20:24 | 显示全部楼层
为什么不能加解密带数字的字符串啊
发表于 2013-5-1 11:17:26 | 显示全部楼层
我彻底晕了   明文密钥是做什么的?
发表于 2013-5-1 19:27:25 | 显示全部楼层
回复 22# 狱渊



解密算法是动态的,有“无限种”可能
密钥能确定其中的一种,并以此推算出明文
发表于 2015-8-29 21:18:20 | 显示全部楼层
话说怎么把加密好的密文输出到比如c:\123.txt
发表于 2018-2-27 19:10:28 | 显示全部楼层
回复 1# pusofalse
看看我这行吗

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:17 , Processed in 0.021654 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表