怎么自己做網(wǎng)站的步驟百度推廣是做什么的
歡迎來CILMY23的博客
本篇主題為?從零開始學(xué)習(xí)Python中的隨機(jī)模塊:實現(xiàn)驗證碼生成功能
個人主頁:CILMY23-CSDN博客
個人專欄系列:?Python?|?C語言?|?數(shù)據(jù)結(jié)構(gòu)與算法?| C++
感謝觀看,支持的可以給個一鍵三連,點(diǎn)贊關(guān)注+收藏。
目錄
一、什么是驗證碼?
二、Python中的隨機(jī)模塊
三、生成一個四位數(shù)的驗證碼
?3.1 簡單的四位數(shù)字驗證碼
3.2 帶有大小寫字母的四位驗證碼
?3.3 生成強(qiáng)密碼
一、什么是驗證碼?
?驗證碼(CAPTCHA)是一種用于區(qū)分用戶是計算機(jī)還是人的公共全自動程序。它的全稱是“Completely Automated Public Turing test to tell Computers and Humans Apart”,即“全自動區(qū)分計算機(jī)和人類的圖靈測試”。
驗證碼的主要目的是防止自動化的腳本或機(jī)器人對網(wǎng)站進(jìn)行惡意操作,如垃圾郵件發(fā)送、惡意注冊、刷票等。
驗證碼種類也很多,什么短信驗證碼,滑塊驗證碼,圖片驗證碼,音頻驗證碼等等,本文主要研究還是以數(shù)字和字母以及符號搭配的驗證碼。?
二、Python中的隨機(jī)模塊
?random模塊提供了很多函數(shù),用來生成隨機(jī)數(shù),我們主要用到的就是choice和
- choice(seq):從序列seq中隨機(jī)選擇一個元素。
- randint(a, b):生成一個指定范圍內(nèi)的隨機(jī)整數(shù),包括區(qū)間端點(diǎn)a和b。
?choice 函數(shù)用于從給定的非空序列中隨機(jī)返回一個元素。?
例如:
import randommy_list = [1, 2, 3, 4, 5]
print(random.choice(my_list))
?randint 函數(shù)用于生成一個指定范圍內(nèi)的隨機(jī)整數(shù)。
例如:
import random# 生成 1 到 10 之間的隨機(jī)整數(shù)
random_number = random.randint(1, 10)
print(random_number)
三、生成一個四位數(shù)的驗證碼
驗證碼驗證的原理是:我們先隨機(jī)生成一個驗證碼,然后用戶通過在驗證框中輸入驗證碼,和給定的驗證碼進(jìn)行比較,如果相同,則驗證成功,否則,驗證失敗。?
?3.1 簡單的四位數(shù)字驗證碼
# 四位數(shù)的數(shù)字驗證碼
import randomchptcha = ""for i in range(4):chptcha = chptcha + str(random.randint(0,9))print(f"四位數(shù)字驗證碼:{chptcha}")
3.2 帶有大小寫字母的四位驗證碼
在生成之前我們先認(rèn)識一個模塊,string
模塊包含許多與字符串處理相關(guān)的實用工具。
string.ascii_letters
:包含所有 ASCII 字母的字符串(包括大小寫)。string.ascii_lowercase
:包含所有小寫 ASCII 字母的字符串。string.ascii_uppercas
e
:包含所有大寫 ASCII 字母的字符串。string.digits
:包含所有數(shù)字字符的字符串。string.punctuation
:包含所有標(biāo)點(diǎn)符號的字符串。string.whitespace
:包含所有空白字符的字符串(空格、制表符、換行符等)。
我們需要一個字符串包含所有的大小寫字符和數(shù)字字符,然后從這個集合中抽取字符,最后拼接打印在一塊。?
# 四位的字母數(shù)字驗證碼import random
import stringcharacters = string.ascii_letters + string.digitscaptcha = ''for i in range(4):captcha += random.choice(characters)print("字母數(shù)字驗證碼:", captcha)
?3.3 生成強(qiáng)密碼
隨著網(wǎng)絡(luò)的發(fā)展,我們也需要一個強(qiáng)密碼,簡單的密碼已經(jīng)無法滿足我們的需求(容易被破解),強(qiáng)密碼指的是是獨(dú)一無二且隨機(jī)的密碼。?密碼每多設(shè)置一位,破解密碼的工作量就會呈指數(shù)增長,甚至相差幾十個量級。像“123456”這樣簡單的弱密碼,1秒鐘內(nèi)就能被破解。8位數(shù)純字母的密碼,稍微有些慢,但破解也只需幾分鐘。
密碼設(shè)置的要求:?
設(shè)置密碼的長度至少應(yīng)為 16 個字符。?
增加長度就可以簡單的讓密碼強(qiáng)度增大,破解一個六位0-9的數(shù)字密碼最強(qiáng)硬的破解需要9的六次方,而破解16位的就需要9的16次方。
在密碼中也沒有必要強(qiáng)制要求同時具有數(shù)字、大寫字母、小寫字母和符號。
這種要求并不一定會讓密碼變強(qiáng),重點(diǎn)是使用的字母或者數(shù)字都是隨機(jī)的。 但是,在某些網(wǎng)站上設(shè)定密碼通常具有特定的字符要求,例如必須要求你設(shè)定一個長度至少為8,包含大小寫字母等等這種要求
?下面我們就看看如何生成一個強(qiáng)密碼
# 生成一個強(qiáng)密碼import random
import stringcharacters = string.ascii_letters + string.digits + string.punctuationpassword = ''for i in range(8):password += random.choice(characters)print("強(qiáng)密碼:", password)
當(dāng)然這樣的強(qiáng)密碼也許并不嚴(yán)謹(jǐn),但是通過這種方式我們可以了解到一定的驗證碼和密碼生成原理。
感謝各位同伴的支持,本期python就講解到這啦,如果你覺得寫的不錯的話,可以給個一鍵三連,點(diǎn)贊,關(guān)注+收藏,若有不足,歡迎各位在評論區(qū)討論。???????