logo

För att generera ett engångslösenord eller unik identifierings -URL

Ett engångslösenord (OTP) är ett lösenord som endast är giltigt för en inloggningssession eller transaktion på ett datorsystem eller annan digital enhet. För mer information hänvisa detta . Algoritm Välj slumpmässigt karaktärer från våra alla möjligheter och generera en sträng av önskad längd från den. OTP: er är i allmänhet 6-7 tecken långa och slumpmässighet i 6-7 tecken garanterar nästan ett säkert sätt att logga in.

OTP: er används allmänt på webbplatser som- Facebook Google-inloggning WiFi- Åtkomst till järnvägsportalinloggning etc.



Hur genereras det?

Det är en stor möjlighet att de använder samma algoritm som en OTP genereras. Om av en slump (mycket sällsynt) den unika strängen som genererats redan genererats tidigare och har associerats med en annan kod, används en annan slumpmässig sträng. Enligt nu verkar det som om endast sex teckensträngar genereras slumpmässigt för en unik identifiering av alla koder. En tid kommer när alla möjliga sex karaktärsträngar kan bli utmattade. Så ja till och med de webbrelaterade saker förlitar sig också starkt på slumpmässighet.

Sannolikhet av kollision av två OTP: er 



  • Längden på OTP är 6 och inställningsstorleken för alla möjliga tecken i OTP är 62. Så det totala antalet möjliga uppsättningar av paret OTP är 62 12 .
  • Några av dem är - [{aaaaaaaaa} {aaaaaaaaaaab} ..... {456789 456788} {456789 456789}]
  • Men de möjliga uppsättningarna av lika par OTP är: 62 6 . Några av dem är - [{aaaaaaaaa} {aaaaab aaaaaab} ..... {456788 456788} {456789 456789}]
  • Därefter den sannolikhet av kollision av två OTP: er är: 62 6 / 62 12 = 1/62 6 = 1 /56800235584 = 1.7605561 -11

sannolikhet Av två OTP -kollidering är lika mindre troliga som existensen av ditt liv på jorden (förhållandet mellan antalet år du kommer att leva till antalet år från universums början och allt som finns). Så jaotps är mycket säkrare än statiska lösenord! Genomförande  

CPP
// A C/C++ Program to generate OTP (One Time Password) #include   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));  // Declare the length of OTP  int len = 6;  printf('Your OTP is - %s' generateOTP(len).c_str());  return(0); } 
Java
// A Java Program to generate OTP (One Time Password) class GFG{ // A Function to generate a unique OTP everytime static 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 += (str.charAt((int) ((Math.random()*10) % n)));  return(OTP); } // Driver code public static void main(String[] args) {  // Declare the length of OTP  int len = 6;  System.out.printf('Your OTP is - %s' generateOTP(len)); } } // This code is contributed by PrinciRaj1992 
Python
# A Python3 Program to generate OTP (One Time Password) import random # A Function to generate a unique OTP everytime def generateOTP(length): # All possible characters of my OTP str = 'abcdefghijklmnopqrstuvwxyzAB  CDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; n = len(str); # String to hold my OTP OTP = ''; for i in range(1length+1): OTP += str[int(random.random()*10) % n]; return (OTP); # Driver code if __name__ == '__main__': # Declare the length of OTP length = 6; print('Your OTP is - ' generateOTP(length)); # This code contributed by Rajput-Ji 
C#
// A C# Program to generate OTP (One Time Password) using System; class GFG {  // A Function to generate a unique OTP everytime  static string generateOTP(int len)  {  // All possible characters of my OTP  string str = 'abcdefghijklmnopqrstuvwxyzABCD'  + 'EFGHIJKLMNOPQRSTUVWXYZ0123456789';  int n = str.Length;  // Creating a new Random object  Random rand = new Random();  // String to hold my OTP  string OTP = '';  for (int i = 1; i <= len; i++)  OTP += (str[((int)((rand.Next() * 10) % n))]);  return (OTP);  }  // Driver code  public static void Main(string[] args)  {  // Declare the length of OTP  int len = 6;  Console.WriteLine('Your OTP is - '  + generateOTP(len));  } } // This code is contributed by phasing17 
JavaScript
// JavaScript Program to generate OTP (One Time Password) // A Function to generate a unique OTP everytime function generateOTP(length) {  // All possible characters of my OTP  let str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';  let n = str.length;  // String to hold my OTP  let OTP = '';  for (var i = 1; i <= length; i++)  OTP += str[(Math.floor(Math.random() * 10) % n)];  return (OTP); } // Driver code // Declare the length of OTP let length = 6; console.log('Your OTP is - ' generateOTP(length)); // This code is contributed by phasing17 

Output (kan vara annorlunda för varje körning):

Your OTP is - 8qOtzy

Tidskomplexitet: O (n) där n = antal tecken i vår OTP Hjälputrymme: Bortsett från att strängen har alla möjliga tecken behöver vi o (n) utrymme för att hålla OTP där n = antal tecken i vår OTP om du gillar geeksorgeeks och vill bidra kan du också skriva en artikel med hjälp av write.geeksforgeeks.org eller maila din artikel till [email protected]. Se din artikel som visas på GeeksForgeeks huvudsida och hjälpa andra nördar. Skriv kommentarer om du hittar något felaktigt eller om du vill dela mer information om ämnet som diskuteras ovan.