본문 바로가기
Study/Python

Python을 이용한 OTP 생성 (pyotp)

by Becoming a Hacker 2022. 10. 19.
반응형

Python에서 pyotp Module을 이용하여 OTP(One Time Password)를 생성할 수 있는데 OTP에는 HOTP와 TOTP라는 2가지 방식이 존재합니다.

HOTP (HMAC Based One Time Password) : 숫자 값을 기준으로 OTP 생성

TOTP (Time Based One Time Password) : 시간 값을 기준으로 OTP 생성

 

여기서는 Python의 pyotp를 이용하여 TOTP를 생성하였습니다.

 

1. pyotp 설치

$ pip install pyotp

2. OTP 생성 방법1

※ 기본 설정으로 30초 단위로 6자리의 OTP가 변경됨

import pyotp
import time
import base64

otp_key = base64.b32encode("test".encode())

now = int(time.time())
totp = pyotp.TOTP(otp_key)
otp1 = totp.at(now-30) # before 30s
otp2 = totp.at(now)
otp3 = totp.at(now+30) # after 30s
print(otp2) # OTP Password as of Current Time
print(totp.verify(otp2)) # True

3. OTP 생성 방법2

※ 180초 단위로 3자리의 OTP가 변경됨

import pyotp
import time
import base64

otp_key = base64.b32encode("test".encode())

now = int(time.time())
totp = pyotp.TOTP(otp_key, digits=3, interval=180)
otp1 = totp.at(now-180) # before 180s
otp2 = totp.at(now)
otp3 = totp.at(now+180) # after 180s
print(otp2) # OTP Password as of Current Time
print(totp.verify(otp2)) # True
반응형

댓글