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  (  1    length  +  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.