Skip to content

สร้าง One Time Password ในภาษาไพทอน

สวัสดีผู้อ่านทุกท่านครับ บทความนี้ผมขอพูดถึงเรื่อง การสร้าง One Time Password ในภาษาไพทอน (Python) กันครับ

One Time Password (หรือที่รู้จักกันในชื่อ OTP) เป็นรหัสผ่านที่ใช้งานได้เพียงครั้งเดียว ตัวอย่างเช่น การทำธุรกรรมทางการเงินกับธนาคารผ่านอินเทอร์เน็ต จะมีรหัสผ่านยืนยันส่ง SMS มายังโทรศัพท์มือถือ นี่คือ รหัส One Time Password

ภาษาไพทอน (Python) ได้มีนักพัฒนาได้พัฒนาโมดูลสำหรับสร้าง One Time Password ในภาษาไพทอนไว้แล้ว คือ โมดูล pyotp

โมดูล pyotp เป็นโมดูลสำหรับสร้าง One Time Password

สามารถติดตั้งได้โดยใช้คำสั่ง pip:

pip install pyotp

การใช้งาน

ให้ทำการ

import pyotp

เข้ามาทุกครั้ง

ใช้งาน One Time Password

totp = pyotp.TOTP('base32secret3232')
totp.now() # => 492039

# OTP verified for current time
totp.verify(492039) # => True
time.sleep(30)
totp.verify(492039) # => False

ดึงรหัส OTP ถัดไป

hotp = pyotp.HOTP('base32secret3232')
hotp.at(0) # => 260182
hotp.at(1) # => 55283
hotp.at(1401) # => 316439

# OTP verified with a counter
hotp.verify(316439, 1401) # => True
hotp.verify(316439, 1402) # => False

สร้าง base32 Secret Key

pyotp.random_base32() # returns a 16 character base32 secret. Compatible with Google Authenticator

การตั้งค่ากับ Google Authenticator

แอพ Google Authenticator บนมือถือ Android, iOS สามารถสร้างลิงค์ otpauth:// แล้วนำลิงค์นี้ไปเพิ่มลงแอพ สำหรับใช้สร้างรหัส One Time Password ได้

totp.provisioning_uri("admin") # บัญชีที่ชื่อว่า admin จะได้ otpauth://totp/admin?secret=base32secret3232 

นำลิงค์ที่ได้ไปสร้าง QR code (https://chart.apis.google.com/chart?cht=qr&chs=250x250&chl=otpauth://totp/admin?secret=base32secret3232) แล้วนำไปสแกนกับแอพ Google Authenticator จะได้รหัส One Time Password มา แล้วลองเปรียบเทียบรหัสที่ได้ระหว่างโปรแกรมไพทอนที่เขียนกับแอพ Google Authenticator

import pyotp
totp = pyotp.TOTP("base32secret3232")
print("Current OTP: %s" % totp.now())

ผลลัพธ์

Current OTP: 250602

แอพ Google Authenticator
สร้าง One Time Password ในภาษาไพทอนตั้งค่ากับ Google Authenticator

หน้าหลักโมดูล pyotp https://github.com/pyotp/pyotp

ลองนำโมดูลนี้ไปออกแบบความปลอดภัยให้กับระบบกันดูครับ

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

1 thought on “สร้าง One Time Password ในภาษาไพทอน

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *