@echo off
setlocal enabledelayedexpansion
cd Batch/BatchLibrariesLocation
set "command=%~3"
set "drivePath=%~2"
set "fileName=%~1"
set "abet=abcdefghijklmnopqrstuvwxyz!@# $%%^&*()_-+={[}]/?<,>.\|~`':; 0123456789"
set "cipher1=;~`8p#j4*&9z\6w+}.{a@%%^e?[@0u2< r|5)o!(xk_-[cf'1b3g7h=m>,qil/sntdvy:"
if "%command%" == "d" goto dycrypt
goto encrypt
:encrypt
(
for /f "usebackq delims=" %%A in ("%drivePath%%fileName%.txt") do (
set "line=%%A"
call :encipher
)
) 3> "%drivePath%%fileName%temp.txt"
if exist "%drivePath%%fileName%.txt" ren "%drivePath%%fileName%.txt" "%fileName%.bak"
ren "%drivePath%%fileName%temp.txt" "%fileName%.txt"
goto :eof
:dycrypt
(
for /f "usebackq delims=" %%A in ("%drivePath%%fileName%.txt") do (
set "line=%%A"
call :decipher
)
) 3> "%drivePath%%fileName%temp.txt"
if exist "%drivePath%%fileName%.txt" ren "%drivePath%%fileName%.txt" "%fileName%.bak2"
ren "%drivePath%%fileName%temp.txt" "%fileName%.txt"
goto :eof
:decipher
set "morf=!abet!"
set "from=!cipher1!"
goto trans
:encipher
set "from=!abet!"
set "morf=!cipher1!"
:trans
set "enil="
:transl
set "$1=!from!"
set "$2=!morf!"
:transc
if /i "!line:~0,1!" == "!$1:~0,1!" set "enil=!enil!!$2:~0,1!"& goto transnc
set "$1=!$1:~1!"
set "$2=!$2:~1!"
IF defined $2 goto transc
:: No translation - keep
set "enil=!enil!!line:~0,1!"
:transnc
set "line=!line:~1!"
if defined line goto transl
if not defined enil goto :eof
>&3 echo !enil!
goto :eof
Переменные и строки в двойных кавычках по мере необходимости.
Опция usebackq
с for
циклами, поэтому можно заключать пути в двойные кавычки.
Выводится в файл из for
Циклы теперь используют поток 3, так что echo on
может быть использовано, и любое эхо, использующее поток 1, не будет перенаправлено в файл.3>
используется для перенаправления потока 3 в файл и >&3
для команды использовать дескриптор потока 3.
Переименуйте расширение исходного файла в .bak
для удобства тестирования.Измените обратно на del
файл, если хотите.
Используйте enabledelayedexpansion
, чтобы избежать эха строки с символами яда, чтобы избежать ошибок.
Исправлены известные ошибки, а не фактическое шифрование и т. Д., Какпоследующие могут быть вашими исследованиями и разработками.
Обновлено с отложенным расширением в верхней части скрипта, чтобы позволить многим переменным использовать отложенное расширение.
Результат отображает аномалии шифрования и дешифрования (без ошибок).
Для шифрования:
"797816-901A5E25AE3F84AAC67979FF01AA681E"|Mon, 29 Feb 2016 11:54:54 GMT|application/vnd.openxmlformats-officedocument.presentationml.presentation|application/vnd.openxmlformats-officedocument.presentationml.presentation
Расшифровано:
"7k7d16-k01a5e25ae3fd4aac67k7kff01aa6d1e"4mon, 2k feb 2016 11:54:54 gmt4application/vndropenxmlformats-officedocumentrpresentationmlrpresentation4application/vndropenxmlformats-officedocumentrpresentationmlrpresentation