Python隨機生成帶特殊字符的密碼
在日常運維中,如果涉及到用戶管理,就一定會用到給用戶設(shè)置密碼的工作,其實吧,平時腦子里覺得設(shè)置個密碼沒什么,但要真讓你隨手敲一個12位帶特殊字符的隨機密碼,也是很痛苦的事,如果讓你敲10個這樣的隨機密碼,我估計要人要瘋了,所以這事不適合人干,但機器最做這個最拿手,今天我們就來學(xué)習(xí)一段python腳本,可以直接生成自己需要的密碼,且密碼長度,數(shù)字,字符個數(shù)隨意你指定,廢話不多說了,我們直接看代碼:
#!/usr/bin/env python import string from itertools import chain from random import choice, sample def mkpasswd(length=12, digits=4, upper=3, lower=3): lowercase = string.lowercase uppercase = string.uppercase salt = '!@#$%^&*()><?' password = list( chain( (choice(uppercase) for _ in range(upper)), (choice(lowercase) for _ in range(lower)), (choice(string.digits) for _ in range(digits)), (choice(salt) for _ in range((length - digits - upper - lower))) ) ) return "".join(sample(password, len(password))) if __name__ == '__main__': print mkpasswd() #!/usr/bin/env python import string from itertools import chain from random import choice, sample def mkpasswd(length=12, digits=4, upper=3, lower=3): lowercase = string.lowercase uppercase = string.uppercase salt = '!@#$%^&*()><?' password = list( chain( (choice(uppercase) for _ in range(upper)), (choice(lowercase) for _ in range(lower)), (choice(string.digits) for _ in range(digits)), (choice(salt) for _ in range((length - digits - upper - lower))) ) ) return "".join(sample(password, len(password))) if __name__ == '__main__': print mkpasswd()
腳本逐行解釋,最開始幾行導(dǎo)入了需要的模塊,接下來定義一個mkpasswd的函數(shù),函數(shù)的參數(shù)可以設(shè)置密碼長度,數(shù)字、大寫和小寫字符的個數(shù),接下來是函數(shù)主題部分:
利用string模塊的屬性生成大小寫字符串,salt是特殊字符集(支持自己添加),我們重點說password的生成,它首先是一個列表,因為調(diào)用了list()工廠函數(shù),chain()函數(shù)的功能是將一組迭代器對象連接起來,chain()里有三個生成器表達式,每個表達式調(diào)用for循環(huán),然后隨機選擇指定個數(shù)的字符,可能大家有看到for循環(huán)中有一個_(下劃線),這個下劃線有什么作用呢?我就不賣關(guān)子了,其實它啥作用也沒有,我自己理解為用不到的變量,這種寫法大家以后也可以用,比如你在循環(huán)的時候用不到這個變量,就可用用_(下劃線)來表示。
函數(shù)最后是return連接后的字符串,sample()函數(shù)是從隨機樣本中取出自己指定的樣本個數(shù),需要兩個參數(shù),一個是樣本,一個是取多少,取的過程是隨機的,其實在這個腳本中這個函數(shù)沒有發(fā)揮它完全的功能,因為生成的password就是12位的,然后在取出12位,不存在從大樣本中取出小樣本的工作,但起到了隨機的功能,所以生成的密碼是字符都是隨機的。
關(guān)于Python隨機生成帶特殊字符的密碼就給大家介紹到這里,希望對大家有所幫助!
相關(guān)文章
python輸入整條數(shù)據(jù)分割存入數(shù)組的方法
今天小編就為大家分享一篇python輸入整條數(shù)據(jù)分割存入數(shù)組的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11Python多線程操作之互斥鎖、遞歸鎖、信號量、事件實例詳解
這篇文章主要介紹了Python多線程操作之互斥鎖、遞歸鎖、信號量、事件,結(jié)合實例形式詳細分析了Python多線程操作互斥鎖、遞歸鎖、信號量、事件相關(guān)概念、原理、用法與操作注意事項,需要的朋友可以參考下2020-03-03python3 小數(shù)位的四舍五入(用兩種方法解決round 遇5不進)
這篇文章主要介紹了python3 小數(shù)位的四舍五入(用兩種方法解決round 遇5不進),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04