A one-time password (OTP) is a password that is valid for only one login
session or transaction, on a computer system or other digital device.
Applications
How it gets generated ?
Well it is a great possibility that they uses the same algorithm as an OTP is generated. If by chance (very rare) the unique string generated is already been generated before and has been associated with a different code then another random string is used.
As per now it seems that only six character strings are generated randomly for a unique identification of all codes. A time will come when all the possible six character strings may get exhausted. So yes, even the web-related stuffs also heavily relies on randomness.
Probability of collision of two OTPs
Implementation
Output (May be different for every run):
Auxiliary Space: Apart from the string having all possible characters we require O(N) space to hold the OTP, where N = number of characters in our OTP.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Applications
- OTPs are widely used in websites like- Facebook, Google Sign-in, Wifi – accessing, Railways Portal Login etc.
How it gets generated ?
Well it is a great possibility that they uses the same algorithm as an OTP is generated. If by chance (very rare) the unique string generated is already been generated before and has been associated with a different code then another random string is used.
As per now it seems that only six character strings are generated randomly for a unique identification of all codes. A time will come when all the possible six character strings may get exhausted. So yes, even the web-related stuffs also heavily relies on randomness.
Probability of collision of two OTPs
- The length of OTP is 6 and the set size of all possible characters in the OTP is 62. So the total number of possible sets of the pair of OTPs are 6212.
- Some of them are – [{aaaaaa, aaaaaa}, {aaaaaa, aaaaab},…..{456789, 456788}, {456789, 456789}]
- But the possible sets of equal pair of OTPs are:626. Some of them are – [{aaaaaa, aaaaaa}, {aaaaab, aaaaab},…..{456788, 456788}, {456789, 456789}]
- Hence the probability of collision of two OTPs is:
626 / 6212 = 1 / 626 = 1 / 56800235584 = 1.7605561-11
Implementation
// A C/C++ Program to generate OTP (One Time Password) #include<bits/stdc++.h> using namespace std; // A Function to generate a unique OTP everytime string generateOTP( int len) { // All possible characters of my OTP string str = "abcdefghijklmnopqrstuvwxyzABCD" "EFGHIJKLMNOPQRSTUVWXYZ0123456789" ; int n = str.length(); // String to hold my OTP string OTP; for ( int i=1; i<=len; i++) OTP.push_back(str[ rand () % n]); return (OTP); } // Driver Program to test above functions int main() { // For different values each time we run the code srand ( time (NULL)); // Delare the length of OTP int len = 6; printf ( "Your OTP is - %s" , generateOTP(len).c_str()); return (0); } |
Your OTP is - 8qOtzy
Time Complexity: O(N), where N = number of characters in our OTP
Auxiliary Space: Apart from the string having all possible characters we require O(N) space to hold the OTP, where N = number of characters in our OTP.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
No comments:
Post a Comment