Для створення одноразового пароля або унікальної ідентифікаційної URL -адреси

Одноразовий пароль (OTP)-це пароль, який є дійсним лише для одного сеансу входу або транзакції на комп'ютерній системі або іншому цифровому пристрої. Для отримання більш детальної інформації зверніться це . Алгоритм Випадково вибирати символи з усіх наших можливостей і генерувати з нього рядок потрібної довжини. ОТП, як правило, довжиною 6-7 символів, а випадковість у 6-7 символів майже гарантує безпечний спосіб входу.

OTP широко використовуються на веб-сайтах, як-от- Facebook Google Wifi Wi-Fi- доступ до входу в портал залізниць тощо.

Як це генерується?

Ну, це велика можливість, що вони використовують той самий алгоритм, як генерується OTP. Якщо випадково (дуже рідко) унікальна генерована рядка вже генерується раніше і була пов'язана з іншим кодом, тоді використовується інший випадковий рядок. Згідно з нині, здається, що лише шість рядків символів генеруються випадковим чином для унікальної ідентифікації всіх кодів. Настав час, коли всі можливі шість струн символів можуть вичерпатися. Так, так, навіть веб-матеріали також сильно покладаються на випадковість.

Ймовірність зіткнення двох ОТП 

  • Довжина OTP становить 6, а встановлений розмір усіх можливих символів в OTP - 62. Отже, загальна кількість можливих наборів пари OTP є 62 12 .
  • Деякі з них - [{aaaaaaaaa} {aaaaaaaaaaaab} ..... {456789 456788} {456789 456789}]
  • Але можливі набори рівних пар OTP: 62 6 . Деякі з них - [{aaaaaaaaa} {aaaaab aaaaaab} ..... {456788 456788} {456789 456789}]
  • Звідси ймовірність зіткнення двох OTPS є: 62 6 / 62 12 = 1/62 6 = 1 /56800235584 = 1,7605561 -11

Так ймовірність З двох зіткнень OTP є настільки ж меншою, як і існування вашого життя на Землі (співвідношення кількості років, яке ви проживете до кількості років з початку Всесвіту та всього, що існує). Отже, Yesotps набагато безпечніші, ніж статичні паролі! Реалізація  

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   

Вихід (може бути різним для кожного запуску):

 Your OTP is - 8qOtzy  

Складність часу: O (n) де n = кількість символів у нашому OTP Допоміжний простір: Окрім рядка, що має всі можливі символи, нам потрібні O (n) простір, щоб утримувати OTP, де n = кількість символів у нашому OTP, якщо вам подобаються гіксфордекс, і хочете внести свій внесок, ви також можете написати статтю за допомогою prite.geeksforgeeks.org або надішліть свою статтю на огляд [email protected]. Дивіться свою статтю, що з’являється на головній сторінці GeksForgeeks та допоможіть іншим вундеркіндам. Будь ласка, напишіть коментарі, якщо ви знайдете щось неправильне або хочете поділитися додатковою інформацією про тему, обговорену вище.