Per generar una contrasenya única o URL d’identificació única

Una contrasenya única (OTP) és una contrasenya vàlida per a una sola sessió o transacció en un sistema informàtic o un altre dispositiu digital. Per a més detalls, consulteu aquest . Algorisme Trieu de forma aleatòria els personatges de totes les nostres possibilitats i genereu -ne una cadena de la longitud desitjada. Els OTP tenen generalment de 6-7 caràcters i l’atzar de 6-7 caràcters gairebé garanteix una forma segura d’iniciar sessió.

Els OTP s’utilitzen àmpliament en llocs web com: Facebook WIFI de l’inici de sessió de Google: accedir a l’inici de sessió del portal de ferrocarrils, etc.

Com es genera?

Doncs és una gran possibilitat que utilitzin el mateix algorisme que es genera un OTP. Si per casualitat (molt rara) la cadena única generada ja s'ha generat abans i s'ha associat a un codi diferent, s'utilitzarà una altra cadena aleatòria. De moment, sembla que només sis cadenes de caràcters es generen aleatòriament per a una identificació única de tots els codis. Arribarà un moment en què es puguin esgotar totes les sis cadenes possibles de sis caràcters. Així que sí, fins i tot les coses relacionades amb la web també es basen molt en l’atzar.

Probabilitat de col·lisió de dos otps 

  • La longitud de l'OTP és de 6 i la mida del conjunt de tots els caràcters possibles de l'OTP és de 62. Així, el nombre total de conjunts possibles del parell d'OTPS és 62 12 .
  • Alguns d'ells són - [{aaaaaaaaa} {aaaaaaaaaaab} ..... {456789 456788} {456789 456789}]
  • Però els possibles conjunts de parells iguals d’OTP són: 62 6 . Alguns d'ells són - [{aaaaaaaaa} {aaaaab aaaaaab} ..... {456788 456788} {456789 456789}]
  • D'aquí el probabilitat de col·lisió de dos OTP és: 62 6 / 62 12 = 1/62 6 = 1 /56800235584 = 1.7605561 -11

Així el probabilitat De dos OTPs que es col·loquen són menys probables com l’existència de la vostra vida a la Terra (la proporció del nombre d’anys viureu amb el nombre d’anys des de l’inici de l’univers i tot el que existeix). Així que els Sí, són molt més segurs que les contrasenyes estàtiques. Exigència  

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   

Sortida (pot ser diferent per a cada carrera):

 Your OTP is - 8qOtzy  

Complexitat del temps: O (n) on n = nombre de caràcters del nostre OTP Espai auxiliar: A part de la cadena que tingui tots els caràcters possibles, necessitem espai O (n) per subjectar l’OTP on n = nombre de caràcters del nostre OTP si us agraden els geeksforgeeks i voldríeu contribuir, també podeu escriure un article mitjançant write.geeksforgeeks.org O envieu el vostre article a [email protected]. Consulteu el vostre article que apareix a la pàgina principal de Geeksforgeeks i ajudeu a altres frikis. Si us plau, escriviu comentaris si trobeu alguna cosa incorrecta o voleu compartir més informació sobre el tema discutit anteriorment.