At generere en engangsadgangskode eller unik identifikations -URL

En engangsadgangskode (OTP) er en adgangskode, der kun er gyldig til en login-session eller transaktion på et computersystem eller anden digital enhed. For flere detaljer henvises til denne . Algoritme Vælg tilfældigt tegn fra vores alle muligheder og genererer en række af den ønskede længde fra den. OTP'er er generelt 6-7 tegn lange og tilfældighed i 6-7 tegn garanterer næsten en sikker måde at logge ind på.

OTP'er er vidt brugt på websteder som- Facebook Google Sign-In WiFi- Adgang til jernbanerportal login osv.

Hvordan bliver det genereret?

Det er en stor mulighed, at de bruger den samme algoritme som en OTP genereres. Hvis tilfældigt (meget sjælden) den unikke streng, der genereres, allerede er blevet genereret før og er blevet forbundet med en anden kode, bruges en anden tilfældig streng. I henhold til nu ser det ud til, at kun seks karakterstrenge genereres tilfældigt til en unik identifikation af alle koder. En tid kommer, hvor alle de mulige seks karakterstrenge kan blive udmattede. Så ja, selv de webrelaterede ting er også stærkt afhængig af tilfældighed.

Sandsynlighed af kollision af to OTP'er 

  • Længden af ​​OTP er 6, og den indstillede størrelse på alle mulige tegn i OTP er 62. Så det samlede antal mulige sæt af paret af OTP'er er 62 12 .
  • Nogle af dem er - [{aaaaaaaaa} {aaaaaaaaaaaab} ..... {456789 456788} {456789 456789}]
  • Men de mulige sæt lige par OTP'er er: 62 6 . Nogle af dem er - [{aaaaaaaaa} {aaaaab aaaaaab} ..... {456788 456788} {456789 456789}]
  • Derfor sandsynlighed af kollision af to OTP'er er: 62 6 / 62 12 = 1/62 6 = 1 /56800235584 = 1.7605561 -11

sandsynlighed af to OTP'er, der kolliderer, er lige så mindre sandsynlige som eksistensen af ​​dit liv på jorden (forholdet mellem antallet af år, du vil leve til antallet af år fra starten af ​​universet og alt, hvad der eksisterer). Så Yesotps er langt mere sikre end statiske adgangskoder! Implementering  

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   

Output (kan være forskellig for hvert løb):

 Your OTP is - 8qOtzy  

Tidskompleksitet: O (n) hvor n = antal tegn i vores OTP Hjælprum: Bortset fra at strengen har alle mulige karakterer, kræver vi O (n) plads til at holde OTP, hvor n = antal tegn i vores OTP, hvis du kan lide geksforgeeks og vil gerne bidrage med at du også kan skrive en artikel ved hjælp af skriv.geeksforgeeks.org eller mail din artikel til [email protected]. Se din artikel, der vises på Geeksforgeeks hovedside og hjælper andre nørder. Skriv kommentarer, hvis du finder noget forkert, eller du vil dele mere information om det emne, der er omtalt ovenfor.