Python 隨機生成高強度密碼

2021-10-09 00:14:55 字數 4028 閱讀 8573

"""

該原始碼的實現過程:1、這年頭,幾十個賬戶,幾十個密碼,每次一設定密碼就頭疼,不知道設定啥。

設定簡單容易被暴力破解,設定複雜不知道設定成啥樣的密碼。

所以就想出來設定隨機數密碼,自動生成,又能防止暴力破解。

2、最大的優點也是缺點,人是記不住隨機數的,所以密碼備份就顯得特別重要。

特別是對該密碼的解釋,不然你回頭找密碼的時候,發現這個密碼不知道對應哪個賬號。

3、1.0版本用了黑窗,非常不美觀,這次用了窗體。

"""import os

import random

import easygui as eg

# 字母型別

englishchar =

['q'

,'w'

,'e'

,'r'

,'t'

,'y'

,'u'

,'i'

,'o'

,'p'

,'l'

,'k'

,'j'

,'h'

,'g'

,'f'

,'d'

,'s'

,'a'

,'z'

,'x'

,'c'

,'v'

,'b'

,'n'

,'m'

]# 數字型別

numberchar =

['1'

,'2'

,'3'

,'4'

,'5'

,'6'

,'7'

,'8'

,'9'

,'0'

]# 符號型別

symbolchar =

['!'

,'@'

,'#'

,'$'

,'%'

,'^'

,'&'

,'*'

]# 生成的密碼

password =

''# 使用者選擇的密碼型別

allchar =

# 選擇密碼型別,如果選擇cancel退出程式,啥都不選退出程式

typepassword = eg.multchoicebox(msg=

"密碼型別"

, title=

"隨機密碼"

, choices=

['數字'

,'字母'

,'符號'],

preselect=

0, callback=

none

, run=

true

)# 退出程式

ifnot

isinstance

(typepassword,

list):

exit(1)

# 根據密碼型別拼接密碼庫

for i in

(typepassword)

:if i.__eq__(

'數字'):

allchar += numberchar.copy(

)if i.__eq__(

'字母'):

allchar += englishchar.copy(

)if i.__eq__(

'符號'):

allchar += symbolchar.copy(

)# 把密碼打亂

random.shuffle(allchar)

# 設定密碼長度

passwordlength = eg.integerbox(msg=

"密碼的長度(9-25)"

, title=

"隨機密碼"

, default=

none

, lowerbound=

9, upperbound=

25, image=

none

, root=

none

)# 退出程式

ifnot

isinstance

(passwordlength,

int)

: exit(1)

# 配置密碼的資訊

while1:

chooses = eg.multenterbox(msg=

"該密碼的資訊"

, title=

"隨機密碼"

, fields=

['這個密碼給誰用?'

,'該密碼的賬號'

], callback=

none

, run=

true

)# 退出程式

ifnot

isinstance

(chooses,

list):

exit(1)

# 資訊滿足要求 退出迴圈 進入下一步

ifnot

''in chooses:

break

else

:# 不滿足要求

eg.msgbox(msg=

"資訊不能設定為空,請重新輸入"

, title=

"隨機密碼"

, ok_button=

"ok"

, image=

none

, root=

none

)# 獲得密碼

for i in

range

(int

(passwordlength)):

# 每次迴圈隨機取一位密碼

password = password + allchar[random.randint(0,

len(allchar)-1

)]eg.msgbox(msg=

"因為密碼是隨機的,需要備份密碼,接下來會選擇存放備份密碼的資料夾。"

, title=

"隨機密碼"

, ok_button=

"ok"

, image=

none

, root=

none

)# 選擇檔案儲存路徑

path = eg.diropenbox(msg=

"備份密碼的檔案"

, title=

"隨機密碼"

, default="")

# 拼接檔案路徑

passwordpath = path +

'/'+ chooses[0]

+'的賬戶和密碼.txt'

# 如果檔案重複 檔案結尾拼接_repeat

while1:

if os.path.exists(passwordpath)

: passwordpath = passwordpath[:-

4]+'_repeat.txt'

else

:break

# 把賬號密碼寫入檔案,進行備份

with

open

(passwordpath,

'w', encoding=

'utf8')as

file

:file

.writelines(

"賬戶id:"

+ chooses[1]

+'\n'

)file

.writelines(

'密碼:'

+ password)

file

.close

# 展示密碼

eg.enterbox(msg=

"隨機生成的密碼"

, title=

"隨機密碼"

, default=password,

strip=

true

, image=

none

, root=

none

)

SSL TLS高強度加密

由於ssl http apache三者共同對請求進行處理,這使得在支援ssl的web伺服器上實現特殊的安全制約變得不那麼簡單。本節介紹了普通情況下的解決方案,作為找出最終方案的第一步。採用這些方案以前,先要盡量地去理解,不了解其限制和相關性就貿然使用是最糟糕的了。可以這樣建立乙個僅使用sslv2協議...

高強度間歇訓練 HIIT

大家都知道身體健康很重要,但如果每天只有45分鐘,可試試下面這種叫hiit high intensity interval training 的方法 首先跑步熱身15 25分鐘 接著做高強度的帶氧運動,每輪45秒,然後休息30 45秒,總共做8 10個迴圈 最後,從頭到足,做一些拉伸運動結束,減少肌...

安卓高強度本地資料加密指北

不想寫so而又想加密本地資料有一定安全強度。對於對稱加密,aes作為des的公升級版,安全性得到提公升,是現在本地加密的主流。本文給出aes的最簡實踐原始碼。做這個的起因是因為東家的加密方法是使用so庫,優點是效能過得去,不依賴安卓版本,不用頻繁改動,但是缺點就是秘鑰儲存在本地,存在本地的內容即使扔...