Egyszeri jelszó vagy egyedi azonosítási URL előállításához

Az egyszeri jelszó (OTP) egy olyan jelszó, amely csak egy bejelentkezési munkamenetre vagy tranzakcióra érvényes számítógépes rendszeren vagy más digitális eszközön. További részletekért lásd ez - Algoritmus Véletlenszerűen válassza ki a karaktereket minden lehetőségünkből, és hozzon létre egy karakterláncot a kívánt hosszúságból. Az OTP-k általában 6-7 karakter hosszúak, a 6-7 karakterben véletlenszerűség szinte garantálja a bejelentkezési módot.

Az OTP-ket széles körben használják olyan webhelyeken, mint a Facebook Google bejelentkezési wifi- A vasúti portál bejelentkezése stb.

Hogyan generálódik?

Nos, nagy esély van arra, hogy ugyanazt az algoritmust használják, mint az OTP. Ha véletlenszerűen (nagyon ritka), akkor a generált egyedi karakterláncot már korábban generálják, és egy másik kódhoz kapcsolódnak, akkor egy másik véletlenszerű karakterláncot használnak. A mostanában úgy tűnik, hogy csak hat karakterhúrot generálnak véletlenszerűen az összes kód egyedi azonosításához. Eljön az idő, amikor a lehetséges hat karakterhúr kimerülhet. Tehát igen, még a webes cuccok is erősen a véletlenszerűségre támaszkodnak.

Valószínűség két OTP ütközése 

  • Az OTP hossza 6, és az OTP összes lehetséges karakterének beállított mérete 62. Tehát az OTP -pár lehetséges halmazainak száma van 62 12 -
  • Néhányuk: [{aaaaaaaaa} {aaaaaaaaaaaab} ..... {456789 456788} {456789 456789}]
  • De az egyenlő pár OTP -k lehetséges halmazai a következők: 62 6 - Néhányuk: [{aaaaaaaaa} {aaaaab aaaaaab} ..... {456788 456788} {456789 456789}]
  • Ezért a valószínűség két OTP ütközése: 62 6 / 62 12 = 1/62 6 = 1 /56800235584 = 1.7605561 -11

Tehát a valószínűség A két ütköző OTP -ből annyira kevésbé valószínű, mint a Földön való életed (az évek számának aránya az univerzum kezdetétől és minden létező évektől fogva élni fog. Végrehajtás  

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   

Kimenet (minden futás esetén eltérő lehet):

 Your OTP is - 8qOtzy  

Idő bonyolultsága: O (n), ahol n = karakterek száma az OTP -ben Kiegészítő hely: Azon a karakterláncon kívül, amelyen minden lehetséges karakter, amelyre szükségünk van az O (n) helynek az OTP tartásához, ahol n = N = karakterek száma az OTP -ben, ha szereti a geeksforgeeks -t, és szeretne hozzájárulni, akkor is írhat egy cikket is. write.geekkforgeeks.org Vagy küldje el a cikkét a [email protected] címre. Lásd a cikkét, amely megjelenik a Geeksforgeeks főoldalán, és segítsen más geeksnek. Kérjük, írjon megjegyzéseket, ha valami helytelennek talál, vagy további információkat szeretne megosztani a fent tárgyalt témáról.