Swift生成OTP程式


OTP,即一次性密碼,是一個自動生成的隨機數字字串,用於數字裝置上的單個登入會話或交易。它通常用於透過提供額外的身份驗證來增強安全性。例如,“423193”、“489201”等。為了生成OTP,Swift提供了以下方法:

  • 使用random()方法

  • 使用randomElement()方法

方法一:使用random()方法

眾所周知,OTP是一個隨機生成的字串。因此,為了生成隨機字串,Swift提供了一個名為random()的內建函式。它用於建立指定範圍內的隨機字串。

語法

func random(in: Range)

此處,random函式只接受一個引數,即範圍。它表示建立隨機值的範圍。其值不能為空。

演算法

  • 步驟1 - 建立一個生成OTP的函式。

  • 步驟2 - 在函式內部,我們建立一個包含數字0-9的字串。

  • 步驟3 - 指定OTP的長度。

  • 步驟4 - 建立一個空字串來儲存OTP。

  • 步驟5 - 執行for-in迴圈以迭代給定長度,並從給定的字元集中隨機選擇字元。

  • 步驟6 - 將隨機選擇的字元新增到新字串中。

  • 步驟7 - 返回最終的OTP。

  • 步驟8 - 呼叫函式以生成OTP。

  • 步驟9 - 顯示輸出。

示例

在下面的Swift程式中,我們將生成一個OTP。為此,我們定義一個返回OTP的函式。此函式建立一個包含數字0-9的字串,並將OTP的長度設定為6。然後,它迭代給定長度,並使用Int.random()函式從給定的字元集中隨機選擇字元,並將每個隨機選擇的字元逐一新增到新字串中,直到達到所需的長度。最後,返回新的OTP。

import Foundation
import Glibc

func createOTP() -> String {
   let numbers = "0123456789"
   let size = 6
   var resOTP = ""

   for _ in 0..<size {
      let randomIndexValue = Int.random(in: 0..<numbers.count)
      let numChar = numbers[numbers.index(numbers.startIndex, offsetBy: randomIndexValue)]
      resOTP.append(numChar)
   }
   return resOTP
}

let finalOTP = createOTP()
print("New generated OTP is:", finalOTP)

輸出

New generated OTP is: 311579

方法二:使用randomElement()方法

Swift提供了一個名為randomElement()的內建函式,使用此函式我們可以隨機生成OTP,因為此函式從給定的序列或集合中返回一個隨機元素。

語法

func randomElement()

它返回隨機元素。如果給定的集合為空,則返回nil。

演算法

  • 步驟1 - 建立一個生成OTP的函式。

  • 步驟2 - 在函式內部,我們建立一個包含數字0-9的字串。

  • 步驟3 - 指定OTP的長度。

  • 步驟4 - 使用randomElement()函式從字串中選擇隨機字元,並使用compactMap()函式將其對映到陣列中。

  • 步驟5 - 透過將陣列轉換為字串來返回OTP。

  • 步驟6 - 呼叫函式以生成OTP。

  • 步驟7 - 顯示輸出。

示例

在下面的Swift程式中,我們將生成一個OTP。為此,我們定義一個返回OTP的函式。此函式建立一個包含數字0-9的字串,並將OTP的長度設定為6。然後,它迭代給定長度,並使用randomElement()函式從給定的字元集中隨機選擇字元,並使用compactMap()方法將它們逐一對映到陣列中,直到達到所需的長度。最後,使用String()初始化器將陣列轉換為字串來返回新的OTP。

import Foundation
import Glibc

func createOTP() -> String {
   let numbers = "0123456789"
   let otpLen = 6
   let newOTP = (0..<otpLen).compactMap { _ in numbers.randomElement() }
    
   return String(newOTP)
}

let newOTP = createOTP()
print("New OTP is: \(newOTP)")

輸出

New OTP is: 545351

結論

這就是我們生成OTP的方式。OTP通常用於身份驗證和驗證,例如雙因素身份驗證、帳戶驗證、交易授權、密碼重置等。它基於時間演算法,為每個身份驗證會話生成唯一的密碼。它不會在同一個身份驗證會話中多次使用,並且僅在特定登入或交易的指定時間內有效。

更新於:2023年6月15日

456 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告