Pentru a genera o parolă o singură dată sau o adresă URL de identificare unică

O parolă unică (OTP) este o parolă valabilă pentru o singură sesiune de conectare sau o tranzacție pe un sistem informatic sau un alt dispozitiv digital. Pentru mai multe detalii, consultați acest . Algoritm Alegeți aleatoriu personaje din toate posibilitățile noastre și generați un șir de lungimea dorită din ea. OTP-urile au în general 6-7 caractere și aleatoriu la 6-7 caractere aproape garantează un mod sigur de conectare.

OTP-urile sunt utilizate pe scară largă pe site-urile web precum WiFi de conectare Google Google- accesarea conectării portalului feroviar etc.

Cum se generează?

Ei bine, este o posibilitate deosebită să folosească același algoritm ca și un OTP. Dacă din întâmplare (foarte rar), șirul unic generat este deja generat înainte și a fost asociat cu un cod diferit, atunci se folosește un alt șir aleatoriu. În funcție de acum se pare că doar șase șiruri de personaje sunt generate la întâmplare pentru o identificare unică a tuturor codurilor. Va veni un moment în care toate cele șase șiruri de personaje posibile pot fi epuizate. Deci da, chiar și lucrurile legate de web se bazează foarte mult pe aleatoriu.

Probabilitate de coliziune a două OTP 

  • Lungimea OTP este de 6, iar dimensiunea setată a tuturor caracterelor posibile din OTP este de 62. Deci numărul total de seturi posibile ale perechii de OTP -uri sunt 62 12 .
  • Unele dintre ele sunt - [{aaaaaaaaa} {aaaaaaaaaaab} ..... {456789 456788} {456789 456789}]
  • Dar seturile posibile de pereche egală de OTP -uri sunt: 62 6 . Unele dintre ele sunt - [{aaaaaaaaa} {aaaaab aaaaaab} ..... {456788 456788} {456789 456789}]
  • De aici probabilitate de coliziune a două OTP -uri este: 62 6 / 62 12 = 1/62 6 = 1 /56800235584 = 1.7605561 -11

Deci probabilitate Din două OTP -uri care se ciocnește sunt la fel de mai puțin probabile ca existența vieții tale pe Pământ (raportul dintre numărul de ani în care vei trăi până la numărul de ani de la începutul universului și tot ceea ce există). Deci Yesotps sunt mult mai sigure decât parolele statice! Implementare  

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   

Ieșire (poate fi diferită pentru fiecare rulare):

 Your OTP is - 8qOtzy  

Complexitate a timpului: O (n) unde n = numărul de caractere în OTP -ul nostru Spațiu auxiliar: În afară de șirul care are toate caracterele posibile, necesită o (n) spațiu pentru a deține OTP unde n = numărul de caractere din OTP -ul nostru, dacă vă place Geeksforgeeks și doriți să contribuiți, puteți scrie și un articol folosind write.geeksforgeeks.org Sau trimiteți-vă articolul la revizuirea-g-e-greeksforgeeks.org. Consultați articolul dvs. care apare pe pagina principală Geeksforgeeks și ajutați alți geeki. Vă rugăm să scrieți comentarii dacă găsiți ceva incorect sau doriți să împărtășiți mai multe informații despre subiectul discutat mai sus.