Lai ģenerētu vienas reizes paroli vai unikālu identifikācijas URL

Vienreizēja parole (OTP) ir parole, kas ir derīga tikai vienai pieteikšanās sesijai vai darījumam datorsistēmā vai citā digitālā ierīcē. Lai iegūtu sīkāku informāciju, skatiet šis Apvidū Algoritms Nejauši izvēlieties rakstzīmes no mūsu visām iespējām un no tā ģenerējiet vēlamā garuma virkni. OTP parasti ir 6-7 rakstzīmes garas, un 6-7 rakstzīmēs nejaušība gandrīz garantē drošu pieteikšanās veidu.

OTP plaši izmanto vietnēs, piemēram, Facebook Google pierakstīšanās WiFi- piekļuvei dzelzceļa portāla pieteikšanās utt.

Kā tas tiek ģenerēts?

Nu, tā ir liela iespēja, ka viņi izmanto to pašu algoritmu, kā tiek ģenerēts OTP. Ja nejauši (ļoti reti), unikālā ģenerētā virkne jau tiek ģenerēta iepriekš un ir saistīta ar citu kodu, tiek izmantota vēl viena nejauša virkne. Kā šķiet, šķiet, ka visu kodu unikālai identificēšanai nejauši tiek ģenerētas tikai sešas rakstzīmju virknes. Pienāks laiks, kad visas iespējamās sešas rakstzīmju virknes var tikt izsmeltas. Tātad jā, pat ar tīmekli saistītie materiāli arī ļoti paļaujas uz nejaušību.

Varbūtība divu OTP sadursmes 

  • OTP garums ir 6, un visu iespējamo OTP iespējamo rakstzīmju iestatītais izmērs ir 62. Tātad kopējais iespējamo OTP komplektu skaits ir 62 12 Apvidū
  • Daži no tiem ir - [{aaaaaaaaa} {aaaaaaaaaaaab} ..... {456789 456788} {456789 456789}]
  • Bet iespējamie vienādu OTP pāri ir: 62 Ar Apvidū Daži no tiem ir - [{aaaaaaaaa} {aaaaab aaaaaab} ..... {456788 456788} {456789 456789}]
  • Tātad varbūtība divu OTP sadursmes ir: 62 Ar / 62 12 = 1/62 Ar = 1 /56800235584 = 1,7605561 -11

Tātad varbūtība no diviem OTP sadursmes ir tikpat mazāk ticams kā jūsu dzīves esamība uz Zemes (gadu skaita attiecība, kurā jūs dzīvosit līdz gadu skaitam no Visuma sākuma un viss, kas pastāv). Tātad YesOtps ir daudz drošāks nekā statiskas paroles! Ieviešana  

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   

Izvade (katram skrējienam var būt atšķirīga):

 Your OTP is - 8qOtzy  

Laika sarežģītība: O (n) kur n = rakstzīmju skaits mūsu OTP Papildu telpa: Papildus virknei, kurai ir visas iespējamās rakstzīmes, mums ir nepieciešama o (n) telpa, lai noturētu OTP, kur n = rakstzīmju skaits mūsu OTP, ja jums patīk geeksforgeeks un vēlaties dot savu ieguldījumu, varat arī uzrakstīt rakstu, izmantojot Write.Geeksforgeeks.org Vai arī nosūtiet savu rakstu uz e-pastu [email protected]. Skatiet savu rakstu, kas parādās Geeksforgeeks galvenajā lapā, un palīdziet citiem geeks. Lūdzu, rakstiet komentārus, ja atrodat kaut ko nepareizu vai vēlaties dalīties ar vairāk informācijas par iepriekš apskatīto tēmu.