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