當前位置:編程學習大全網 - 源碼下載 - 使用批處理或者腳本程序加密解密字符串

使用批處理或者腳本程序加密解密字符串

老早就像編了,只是真有點麻煩,編了壹半放棄了,今天進來壹看還沒解決就把我未完成的給妳看看。可能有錯誤

@echo off

setlocal enabledelayedexpansion

set /p shu=

set yushu=

set zhongshang=

set shang=

set beichushu=

set jieguo=

set base=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

:cal

set beichushu=%yushu%%shu:~0,1%

set shu=%shu:~1,100000%

set /a "shang=beichushu>>24"

set zhongshang=%zhongshang%%shang%

if "%zhongshang%"=="0" set zhongshang=

set /a "yushu=beichushu&0xFFFFFF"

if NOT "%shu%"=="" goto cal

set tt=

set /a "a1=(yushu>>16)&0xFF"

set /a "a2=yushu&0xFF00"

set /a "a3=(yushu&0xFF)<<16"

set /a "a=a1|a2|a3"

if NOT "%zhongshang%"=="" goto b1

if NOT %a2% EQU 0 goto b0

if %a1% EQU 0 goto b2

goto b1

:b0

if %a1% EQU 0 goto b3

:b1

set /a "b=a&077"

set tmp=!base:~%b%,1!

set tt=%tmp%%tt%

set /a "b=a&07700"

set /a "b>>=6"

set tmp=!base:~%b%,1!

set tt=%tmp%%tt%

:b2

set /a "b=a&0770000"

set /a "b>>=12"

set tmp=!base:~%b%,1!

set tt=%tmp%%tt%

:b3

set /a "b=a&077000000"

set /a "b>>=18"

set tmp=!base:~%b%,1!

set tt=%tmp%%tt%

set jieguo=%jieguo%%tt%

set yushu=

set shu=%zhongshang%

set zhongshang=

if NOT "%shu%"=="" goto cal

echo %jieguo%

pause

goto :eof

:eof

妳試試看,輸入數字就行了,然後想改成從文件讀取妳自己應該可以吧。解密的還差16進制轉10進制。。。好麻煩,不想弄了,要不妳看我這個的思路編吧

如果有bug跟我討論討論

另附base64 解密

@echo off

setlocal enabledelayedexpansion

set base=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

for /l %%i in (0,1,25) do (

set !base:~%%i,1!=%%i

)

:start

set /p str=

:loop

::每個loop取出4個字符 轉成壹個24位的數字

set s1=%str:~0,1%

set s2=%str:~1,1%

set s3=%str:~2,1%

set s3=%str:~3,1%

if "%s2%"=="" set s2=A

if "%s3%"=="" set s3=A

if "%s4%"=="" set s4=A

set str=%str:~3,1000%

call ::getnum %s1% num1

call ::getnum %s2% num2

call ::getnum %s3% num3

call ::getnum %s4% num4

echo %num1% %num2% %num3%

set "num1=(num1<<18)||(num2<<12)||(num3<<6)||num4"

set "num1=(num1>>16)||(num1&0xff00)||((num1&0xff)<<16)"

:while

if NOT "%str%"=="" goto loop

goto start

pause

goto eof

:getnum

if "%1"=="+" (

set num=62

goto return

)

if "%1"=="/" (

set num=63

goto return

)

if %1 LSS a goto number

set num=!%1!

if NOT "%1" EQU "!base:~%num%,1!" set /a num=num+26

goto return

:number

set /a num=s1+52

:return

set /a %2=num

:eof

  • 上一篇:Javajoin()源代碼
  • 下一篇:2021 7月長沙疫情取消延期活動匯總。
  • copyright 2024編程學習大全網