Python生成一次性密碼 (OTP) 程式


本文將討論如何生成隨機一次性密碼 (OTP)。我們將使用Python中的兩個模組來完成此任務,即randomstring模組。random模組提供生成隨機數的相關函式,而string模組包含許多合適的字串常量。此應用程式可用於安全身份驗證或臨時訪問程式碼,以滿足各個方面和要求。我們將提供一些示例來說明這些程式的應用方法。

讓我們舉個例子來演示計算過程。以下示例僅供理解,我們將逐步講解計算過程。

示例1:使用random.choice()方法生成一次性密碼 (OTP) 的Python程式

程式碼解釋和設計步驟

步驟1:在Anaconda提示符中開啟Jupyter Notebook,並在其單元格中開始編寫程式碼。

步驟2:匯入‘random’‘string’模組。

步驟3:使用此函式‘generate_otp’,它接受一個名為‘length’的引數,該引數指定所需的OTP長度。

步驟4:在函式內定義一個變數‘letters’,此變數將儲存字母和數字的組合(大寫、小寫和數字),由‘string’模組中的‘ascii_letters’‘digits’常量生成。

步驟5:OTP將從字元和數字池中生成,該字串將使用‘random.choice ()’從letters中隨機選擇字元和數字,並生成OTP。

步驟6:最後,返回生成的輸出。

生成一次性密碼 (OTP) 的程式碼

示例

import random    # Import random module
import string    # Import string module

def generate_otp(length): # Define the function with the parameter ‘length’
    letters = string.ascii_letters + string.digits # stores upper and lower 
                                   #character and digit in ‘letters’ variable
    otp = ''.join(random.choice(letters) for _ in range(length))
    return otp

otp_length = 8  # Length of the OTP
otp = generate_otp(otp_length) # Generate OTP
print("Generated OTP:", otp) # Print OTP

輸出

Generated OTP: O6sbK1zM

此程式生成一個隨機的一次性密碼,以字母數字形式提供給您,並將其列印到控制檯。可以根據需要透過更改OTP的長度來自定義它。

示例2:使用數字OTP生成一次性密碼 (OTP) 的Python程式

程式碼解釋和設計步驟

步驟1:在Anaconda提示符中開啟Jupyter Notebook,並在其單元格中開始編寫程式碼。

步驟2:匯入‘random’模組以生成OTP的隨機數。

步驟3:使用此函式‘generate_otp’,它接受一個名為‘length’的引數,該引數指定所需的OTP長度。

步驟4:透過將隨機數字 (0-9) 追加到OTP字串指定次數,隨機生成OTP號碼。

步驟5:函式‘validate_otp’接受兩個引數,即‘user_input’‘otp’

步驟6:將輸入與‘生成的OTP’進行比較,並檢查true條件,如果匹配則返回True,表示OTP有效,否則返回False。

步驟7:設定所需的OTP長度,這裡我們取6,但您也可以將其更改為任何長度。

步驟8:透過呼叫‘generate_otp’函式生成OTP,並將其儲存在otp變數中。

步驟9:生成的OTP將列印在控制檯上,使用者可以看到它。

步驟10:使用者只能使用input函式以數字形式輸入OTP。

步驟11:呼叫‘validate_otp’函式,透過提供使用者輸入和生成的OTP作為引數來驗證使用者的輸入。

步驟12:結果將儲存在變數‘vaild’中。

步驟13:檢查‘vaild’的值。列印顯示OTP有效或無效的訊息。

使用另一種方法生成一次性密碼的程式碼。

示例

import random  # Import random module

def generate_otp(length): # Define the function with the parameter ‘length’
    otp = ""
    for _ in range(length): # Use for loop
        otp += str(random.randint(0, 9)) # 
    return otp

def validate_otp(user_input, otp):
    return user_input == otp

length = 6  # Length of the OTP

# Generate OTP
otp = generate_otp(length)
print("Generated OTP:", otp)

# Prompt user to enter OTP
user_input = 30847

# Validate OTP
if validate_otp(user_input, otp):
    print("OTP is valid!")
else:
   print("Invalid OTP!")

輸出

Generated OTP: 348071
Invalid OTP!

檢視結果

此程式將生成一個隨機的數字OTP。此外,它透過將其與使用者提供的輸入進行比較來進行驗證。這可以根據您的特定需求使用。

在本文中,我們使用兩種不同的方法生成一次性密碼 (OTP) 以滿足我們的需求,第一種是字母數字的,第二種是僅數字的OTP。我們已在此文件中展示瞭如何生成一次性密碼 (OTP) 元素,這些元素可被給定數字整除。這些程式可用於各種領域,例如使用者身份驗證、密碼重置、雙因素身份驗證 (2FA)、交易驗證、基於時間的OTP (TOTP)、安全檔案共享和驗證碼替換。

更新於:2023年8月28日

4K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.