For å generere en engangspassord eller unik identifikasjons -URL

Et engangspassord (OTP) er et passord som bare er gyldig for en påloggingsøkt eller transaksjon på et datasystem eller annen digital enhet. For mer informasjon Se dette . Algoritme Velg tilfeldige tegn fra våre alle muligheter og generer en streng med ønsket lengde fra den. OTP-er er vanligvis 6-7 tegn lang og tilfeldighet i 6-7 tegn garanterer nesten en sikker måte å logge inn på.

OTP-er er mye brukt på nettsteder som- Facebook Google påloggings WiFi- Få tilgang til Railways Portal-pålogging etc.

Hvordan det blir generert?

Vel, det er en stor mulighet at de bruker den samme algoritmen som en OTP genereres. Hvis det ved en tilfeldighet (veldig sjelden) den unike strengen som genereres allerede er generert før og har blitt assosiert med en annen kode, brukes en annen tilfeldig streng. Per nå ser det ut til at bare seks karakterstrenger genereres tilfeldig for en unik identifisering av alle koder. En tid vil komme når alle mulige seks karakterstrenger kan bli utmattet. Så ja, til og med de nettrelaterte tingene er også sterkt avhengig av tilfeldighet.

Sannsynlighet av kollisjon av to OTP -er 

  • Lengden på OTP er 6 og den angitte størrelsen på alle mulige tegn i OTP er 62. Så det totale antallet mulige sett med paret av OTPs er 62 12 .
  • Noen av dem er - [{aaaaaaaaa} {aaaaaaaaaaaab} ..... {456789 456788} {456789 456789}]
  • Men de mulige settene med like par OTP -er er: 62 6 . Noen av dem er - [{aaaaaaaaa} {aaaaab aaaaaab} ..... {456788 456788} {456789 456789}]
  • Derav sannsynlighet av kollisjon av to OTP -er er: 62 6 / 62 12 = 1/62 6 = 1 /56800235584 = 1.7605561 -11

sannsynlighet av to OTP -er som kolliderer er like mindre sannsynlige som eksistensen av livet ditt på jorden (forholdet mellom antall år du vil leve til antall år fra universets start og alt som eksisterer). Så YesoTPs er langt sikrere enn statiske passord! 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   

Utgang (kan være annerledes for hver kjøring):

 Your OTP is - 8qOtzy  

Tidskompleksitet: O (n) hvor n = antall tegn i OTP Hjelpeplass: Bortsett fra at strengen har alle mulige tegn, krever vi O (n) plass for å holde OTP der n = antall tegn i OTP -en vår hvis du liker GeeksForgeeks og ønsker å bidra med, kan du også skrive en artikkel ved hjelp av skriv.geeksforgeeks.org eller send artikkelen din til å gjennomgå [email protected]. Se artikkelen din som vises på GeeksForgeeks hovedside og hjelpe andre nørder. Vennligst skriv kommentarer hvis du finner noe feil, eller du vil dele mer informasjon om emnet diskutert ovenfor.