複雜密碼的批處理實現(亂序的大小寫字母數字符號)

2021-10-08 12:35:13 字數 2958 閱讀 5421

測試環境:windows10

宣告:因為特殊字元產生的缺字元和長度錯誤已修正

使用方法:

1.第一段**:

文字編輯器如editplus,儲存,儲存型別選擇「所有檔案」,名稱為「密碼.bat」

可以修改密碼長度,大小寫字母數字符號的數量,對應第二段**txt檔案中大小寫字母數字符號的數量

2.第二段**:

文字編輯器如editplus,儲存,儲存型別選擇「所有檔案」,名稱為」zdb.txt",內容可根據需要修改

3.第一段和第二段**放到同一目錄

4.原始金鑰是按照大寫字母,數字,小寫字母,符號為一組生成的,亂序金鑰是原始密碼的亂序排列,

最終密碼就是亂序密碼,可以用於亂序,也可以用於複雜的亂序金鑰的生成

6.如果原始金鑰寫固定值,可以書寫如下call set "key=******",並保留len這個變數及固定值長度,注意固定值中的特殊字元要轉義,加^

7.改了一處錯誤

密碼.bat**:

@echo off

setlocal enabledelayedexpansion

rem 金鑰長度

set len=32

rem 大寫字母數量

set caplen=25

rem 數字數量

set numlen=10

rem 小寫字母數量

set noncaplen=24

rem 符號數量

set signlen=8

set key=

for /l %%i in (1,1,!len!) do (

set /a dig=%%i%%4

if !dig! equ 1 (

set /a n1=!random!%%!caplen!

set idx1=0

for /l %%a in (1,1,!caplen!) do (

if !n1! equ !idx1! (

set /a num=%%a

)set /a idx1+=1))

if !dig! equ 2 (

set /a n2=!random!%%!numlen!

set idx2=0

set /a minnum=!caplen!+1

set /a maxnum=!minnum!+!numlen!-1

for /l %%b in (!minnum!,1,!maxnum!) do (

if !n2! equ !idx2! (

set /a num=%%b

)set /a idx2+=1))

if !dig! equ 3 (

set /a n3=!random!%%!noncaplen!

set idx3=0

set /a minnoncap=!maxnum!+1

set /a maxnoncap=!minnoncap!+!noncaplen!-1

for /l %%c in (!minnoncap!,1,!maxnoncap!) do (

if !n3! equ !idx3! (

set /a num=%%c

)set /a idx3+=1))

if !dig! equ 0 (

set /a n4=!random!%%!signlen!

set idx4=0

set /a minsign=!maxnoncap!+1

set /a maxsign=!minsign!+!signlen!-1

for /l %%d in (!minsign!,1,!maxsign!) do (

if !n4! equ !idx4! (

set /a num=%%d

)set /a idx4+=1))

set idx=1

for /f %%j in (zdb.txt) do (

if !num! equ !idx! (

set key=!key!%%j

)set /a idx+=1))

echo 原始金鑰是!key!

echo.

set key1=

for /l %%z in (!len!,-1,1) do (

rem 取隨機索引

set /a idx=%random%%%%%z

rem 下乙個索引

set /a idx1=!idx!+1

call call set "o=%%%%key:~%%idx%%,1%%%%"

if !idx! equ 0 (

call call set "key=%%%%key:~%%idx1%%%%%%"

) else (

set /a maxidx=%%z-1

if !idx! geq !maxidx! (

set idx=!maxidx!

call call set "key=%%%%key:~0,%%idx%%%%%%"

) else (

call call set "key=%%%%key:~0,%%idx%%%%%%%%%%key:~%%idx1%%%%%%"))

set key1=!key1!!o!

)echo 亂序金鑰是!key1!

echo.

echo 最終金鑰是!key1!

echo.

pause

exit

zdb.txt**:

abc

defg

hijk

lmnp

qrst

uvwx

yz01

2345

6789

abcd

efgh

ijkm

npqr

stuv

wxyz

^~^!

^@^#

^$^%

^^^&

(全文完)

批處理實現mysql的備份

指令碼 echo off echo.echo mysql資料庫備份 echo echo.echo 今天是 date echo 時間是 time echo.echo 設定ymd變數為日期格式 yyyymmdd set ymd date 4 date 5,2 date 8,2 建立資料夾 md d jd...

批處理的寫法

有for迴圈的批處理 eg set file a,b set qp 27,28 注意 1 set後面的內容不能有空格。2 雙層迴圈之間要有 do 3 a和 a 不區分大小寫,所以如果寫成 a in a 就會出錯。20180424補充 for r i yuv s in yuv do cut.exe s...

JDBC的批處理

jdbc的批處理 1 批處理 一次性處理很多資料。解釋 有時候需要向資料庫傳送一批sql語句執行,這時應避免向資料庫一條條的傳送執行,而應採用jdbc的批處理機制,以提公升執行效率。2 兩種方式 statement statement stat conn.createstatement 建立語句 s...