generate one-time password (OTP)

Program to generate one-time password (OTP)

One-time Passwords (OTP) is a password that is valid for only one login session or transaction in a computer or a digital device. Now a days OTP’s are used in almost every service like Internet Banking, online transactions etc. They are generally combination of 4 or 6 numeric digits or a 6-digit alphanumeric.

random() function can be used to generate random OTP which is predefined in random library. Let’s see how to generate OTP using Python.

Used Function:

random.random(): This function returns any random number between 0 to 1. math.floor(): It returns floor of any floating number to a integer value.

Using the above function pick random index of string array which contains all the possible candidates of a particular digit of the OTP.

Example #1 : Generate 4 digit Numeric OTP

# import library 
import math, random 

# function to generate OTP 
def generateOTP() : 

	# Declare a digits variable 
	# which stores all digits 
	digits = "0123456789"
	OTP = "" 

# length of password can be chaged 
# by changing value in range 
	for i in range(4) : 
		OTP += digits[math.floor(random.random() * 10)] 

	return OTP 

# Driver code 
if __name__ == "__main__" : 
	
	print("OTP of 4 digits:", generateOTP()) 

Output:

OTP of 4 digits: 3211

Example #2: Generate alphanumeric OTP of length 6

# import library 
import math, random 

# function to generate OTP 
def generateOTP() : 

	# Declare a string variable 
	# which stores all string 
	string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
	OTP = "" 
	length = len(string) 
	for i in range(6) : 
		OTP += string[math.floor(random.random() * length)] 

	return OTP 

# Driver code 
if __name__ == "__main__" : 
	
	print("OTP of length 6:", generateOTP()) 

Output:

OTP of length 6: pyelJl

Example #3: Using String constants

# Importing random to generate 
# random string sequence 
import random 
	
# Importing string library function 
import string 
	
def rand_pass(size): 
		
	# Takes random choices from 
	# ascii_letters and digits 
	generate_pass = ''.join([random.choice( string.ascii_uppercase +
											string.ascii_lowercase +
											string.digits) 
											for n in range(size)]) 
							
	return generate_pass 
	
# Driver Code 
password = rand_pass(10) 
print(password) 

Output:

2R8gaoDKqn

Reference : https://www.geeksforgeeks.org/python-program-to-generate-one-time-password-otp/?ref=rp

Last updated