【发布时间】:2019-07-29 06:30:41
【问题描述】:
我发现此代码用于直接用您定义为简单加密/解密方法的其他字符替换文本输入,@Aacini 修改了代码 问题是当我尝试编码一些目录时 "C:\Program 文件 (x86)\Adobe" 它会导致这个
7EzkSw]8Z8KFSBheZL4HXWPj5mZda7tFXveyJHXWPj5qFYBS6qYAnsbZFXRRgWua5CW65QMWuezmzLx6ry4ReEfnPAxZFXRRgv275kQHhRN7HvvpYPWAd2Kj88Z8KFSqFYBS6NF7SQUmZda7tYrGxPa6ry4Re
问题是它永远不会对冒号进行编码:
但是,如果我手动输入数据中定义的冒号代码: = xU9pbp 进行解密,它将解密冒号值
仅与加密有关的问题将导致 ] 值向上 7EzkSw]
并且解密总是停止在第一个字母C
代码
@echo off
setlocal EnableDelayedExpansion
title Encrypt and decrypt string
color a
rem Create Encrypt/Decrypt arrays
set "charSet=abcdefghijklmnopqrstuvwxyz1234567890@#$*(.,- \/:"
set i=0
for %%a in (
qFYBS6 YrGxPa 7EzkSw NF7SQU 6ry4Re
Wua5CW FXveyJ TjMmgD 65QMWu GkmBEE
KXNe9s ezmzLx qYAnsb dd4PWp mZda7t
BheZL4 WUmv8U HXWPj5 EfnPAx kBEypV
tDNJde zxNvTT YJ5Pms HhRN7H Vkh3EX
4WfDP3 EQUgc5 abYL93 EBLCJa xEgKbW
Z6QA9U Ad2Kj8 zRDwx9 vvpYPW ms499B
55FGHB eu3RA9 FSYKz9 KsTuqW ETjRHF
v275kQ KUngv8 2Z9ba8 Xtxkzp ZFXRRg
8Z8KFS a2yjt4 xU9pbp) do (
for %%i in (!i!) do for /F "delims=" %%c in ("!charSet:~%%i,1!") do (
set "ENC[%%c]=%%a"
set "DEC[%%a]=%%c"
)
set /A i+=1
)
echo Enter a string to encrypt:
set /p Encrypt=
REM cls
set Encrypt2=%Encrypt%
set "EncryptOut="
:encrypt2
set "EncryptOut=%EncryptOut%!ENC[%Encrypt2:~0,1%]!"
set "Encrypt2=%Encrypt2:~1%"
if defined Encrypt2 goto encrypt2
echo %EncryptOut%>>"encrypted.txt"
echo/
set /p CryptedPass=< "encrypted.txt"
echo Input string clear text ===^> %Encrypt%
echo/
echo Output string crypted ===^> %CryptedPass%
pause
set /p Decrypt=<"encrypted.txt"
REM cls
ECHO/
ECHO/
set Decrypt2=%Decrypt%
set "DecryptOut="
:decrypt2
set "DecryptOut=%DecryptOut%!DEC[%Decrypt2:~0,6%]!"
set "Decrypt2=%Decrypt2:~6%"
if defined Decrypt2 goto decrypt2
echo Input string: %Decrypt%
echo/
echo Output string: %DecryptOut%
pause
【问题讨论】:
-
另外,你总是解密相同的字符串,因为你 append 到一个文件 (
echo %EncryptOut%>>"encrypted.txt"),但总是读取 first 行 (set /p CryptedPass=< "encrypted.txt")。将>>更改为>:echo %EncryptOut%>"encrypted.txt" -
我将使用的代码意味着用户只使用一个字符串并将其加密在文件中,因此用户不会使用它,但问题是冒号:在他输入的文本中不会被替换,我不太了解 cmd 来使用它的变量和常量并编辑它们
标签: windows batch-file