So generieren Sie ein Einmalpasswort oder eine eindeutige Identifikations-URL

Ein Einmalpasswort (OTP) ist ein Passwort, das nur für eine Anmeldesitzung oder Transaktion auf einem Computersystem oder einem anderen digitalen Gerät gültig ist. Weitere Einzelheiten finden Sie unter Das . Algorithmus Wählen Sie zufällig Zeichen aus unseren Möglichkeiten aus und generieren Sie daraus eine Zeichenfolge der gewünschten Länge. OTPs sind im Allgemeinen 6–7 Zeichen lang und die Zufälligkeit von 6–7 Zeichen garantiert fast eine sichere Art der Anmeldung.

OTPs werden häufig auf Websites wie Facebook, Google Sign-in Wifi, Zugriff auf das Railways Portal Login usw. verwendet.

Wie wird es generiert?

Nun, es besteht eine große Wahrscheinlichkeit, dass sie denselben Algorithmus verwenden, wenn ein OTP generiert wird. Wenn die generierte eindeutige Zeichenfolge zufällig (sehr selten) bereits zuvor generiert wurde und einem anderen Code zugeordnet wurde, wird eine andere zufällige Zeichenfolge verwendet. Zur eindeutigen Identifizierung aller Codes werden derzeit offenbar nur sechs Zeichenfolgen zufällig generiert. Es wird eine Zeit kommen, in der alle möglichen sechs Zeichenfolgen erschöpft sein könnten. Also ja, auch die webbezogenen Dinge basieren stark auf Zufälligkeit.

Wahrscheinlichkeit Kollision zweier OTPs 

  • Die Länge des OTP beträgt 6 und die Satzgröße aller möglichen Zeichen im OTP beträgt 62. Die Gesamtzahl der möglichen Sätze des OTP-Paares beträgt also 62 12 .
  • Einige davon sind - [{AAAAAAAAA} {AAAAAAAAAAAAB} ..... {456789 456788} {456789 456789}]
  • Die möglichen Sätze gleicher OTP-Paare sind jedoch: 62 6 . Einige davon sind - [{AAAAAAAAA} {AAAAAB AAAAAAB} ..... {456788 456788} {456789 456789}]
  • Daher die Wahrscheinlichkeit der Kollision zweier OTPs ist: 62 6 / 62 12 = 1/62 6 = 1 / 56800235584 = 1,7605561 -11

Also die Wahrscheinlichkeit Dass zwei OTPs kollidieren, ist so unwahrscheinlich wie die Existenz Ihres Lebens auf der Erde (Verhältnis der Anzahl der Jahre, die Sie leben werden, zur Anzahl der Jahre seit dem Beginn des Universums und allem, was existiert). Also ja, OTPs sind viel sicherer als statische Passwörter! Durchführung  

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   

Ausgabe (kann bei jedem Lauf unterschiedlich sein):

 Your OTP is - 8qOtzy  

Zeitkomplexität: O(N) wobei N = Anzahl der Zeichen in unserem OTP Hilfsraum: Abgesehen davon, dass die Zeichenfolge alle möglichen Zeichen enthält, benötigen wir O(N) Speicherplatz, um das OTP zu speichern, wobei N = Anzahl der Zeichen in unserem OTP. Wenn Sie GeeksforGeeks mögen und einen Beitrag leisten möchten, können Sie auch einen Artikel mit schreiben write.geeksforgeeks.org oder senden Sie Ihren Artikel per E-Mail an [email protected]. Sehen Sie, wie Ihr Artikel auf der Hauptseite von GeeksforGeeks erscheint, und helfen Sie anderen Geeks. Bitte schreiben Sie Kommentare, wenn Sie etwas Falsches finden oder weitere Informationen zu dem oben besprochenen Thema mitteilen möchten.