【问题标题】:encrypt/decrypt text input by user and save as variable to use later [duplicate]加密/解密用户输入的文本并保存为变量以供以后使用[重复]
【发布时间】: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%&gt;&gt;"encrypted.txt"),但总是读取 first 行 ( set /p CryptedPass=&lt; "encrypted.txt")。将&gt;&gt; 更改为&gt;echo %EncryptOut%&gt;"encrypted.txt"
  • 我将使用的代码意味着用户只使用一个字符串并将其加密在文件中,因此用户不会使用它,但问题是冒号:在他输入的文本中不会被替换,我不太了解 cmd 来使用它的变量和常量并编辑它们

标签: windows batch-file


【解决方案1】:

我通过尝试将输出中的 ] 替换为冒号值然后保存它来解决这个问题,这是成功的,因为当再次解码时,路径会用冒号返回到原始路径:i it

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    相关资源
    最近更新 更多