Norėdami generuoti vienkartinį slaptažodį arba unikalų identifikavimo URL

Vienkartinis slaptažodis (OTP) yra slaptažodis, kuris galioja tik vienai prisijungimo sesijai ar operacijai kompiuterinėje sistemoje ar kitame skaitmeniniame įrenginyje. Norėdami gauti daugiau informacijos, skaitykite Tai . Algoritmas Atsitiktinai išsirinkite simbolius iš visų mūsų galimybių ir iš jo sugeneruokite norimo ilgio eilutę. OTP paprastai yra 6–7 simbolių ilgio, o atsitiktinumas-6–7 simboliai, beveik garantuoja saugų prisijungimo būdą.

OTP yra plačiai naudojamos tokiose svetainėse kaip „Facebook“ „Google“ prisijungimas

Kaip jis generuojamas?

Na, tai yra puiki galimybė, kad jie naudoja tą patį algoritmą, kaip ir OTP. Jei atsitiktinai (labai reta) unikali sugeneruota eilutė jau buvo sugeneruota anksčiau ir ji buvo susieta su kitu kodu, tada naudojama kita atsitiktinė eilutė. Kaip dabar atrodo, atrodo, kad tik šešios simbolių eilutės yra sugeneruojamos atsitiktinai, kad būtų išskirtinis visų kodų identifikavimas. Ateis laikas, kai visos įmanomos šešios simbolių stygos gali būti išsekusios. Taigi taip, net su žiniatinkliais susiję produktai taip pat labai priklauso nuo atsitiktinumo.

Tikimybė dviejų OTP susidūrimo 

  • OTP ilgis yra 6, o visų galimų OTP simbolių rinkinio dydis yra 62. Taigi bendras galimų OTP poros rinkinių skaičius yra 62 12 .
  • Kai kurie iš jų yra - [{aaaaaaaaa} {aaaaaaaaaaaab} ..... {456789 456788} {456789 456789}]
  • Bet galimi lygios OTP poros rinkiniai yra: 62 6 . Kai kurie iš jų yra - [{aaaaaaaaa} {aaaaab aaaaaab} ..... {456788 456788} {456789 456789}]
  • Taigi Tikimybė Dviejų OTP susidūrimas yra: 62 6 / 62 12 = 1/62 6 = 1 /56800235584 = 1,7605561 -11

Taigi Tikimybė Iš dviejų OTP susidūrimo yra mažiau tikėtina, kaip ir jūsų gyvenimo Žemėje egzistavimas (metų skaičiaus santykis, kurį gyvensite iki metų skaičiaus nuo visatos pradžios ir visko, kas egzistuoja). Taigi „Yesotps“ yra daug saugesni nei statiniai slaptažodžiai! Įgyvendinimas  

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   

Išvestis (kiekvienam bandymui gali būti skirtingas):

 Your OTP is - 8qOtzy  

Laiko sudėtingumas: O (n), kur n = simbolių skaičius mūsų OTP Pagalbinė erdvė: Be eilutės, turinčios visus įmanomus simbolius, mums reikia o (n) erdvės, kad būtų galima laikyti OTP, kur n = simbolių skaičius mūsų OTP, jei jums patinka „GeeksForgeeks“ ir norėtumėte prisidėti, taip pat galite parašyti straipsnį naudodamiesi straipsniu naudodami Rašykite.geeksforgeeks.org Arba atsiųskite savo straipsnį adresu reciaw [email protected]. Peržiūrėkite savo straipsnį, rodomą pagrindiniame „GeeksforGeeks“ puslapyje ir padėkite kitiems geiksmetrams. Parašykite komentarus, jei rasite ką nors neteisingo, arba norite pasidalyti daugiau informacijos apie aukščiau aptartą temą.