logo

Pentru a genera o parolă o singură dată sau o adresă URL de identificare unică

O parolă unică (OTP) este o parolă valabilă pentru o singură sesiune de conectare sau o tranzacție pe un sistem informatic sau un alt dispozitiv digital. Pentru mai multe detalii, consultați acest . Algoritm Alegeți aleatoriu personaje din toate posibilitățile noastre și generați un șir de lungimea dorită din ea. OTP-urile au în general 6-7 caractere și aleatoriu la 6-7 caractere aproape garantează un mod sigur de conectare.

OTP-urile sunt utilizate pe scară largă pe site-urile web precum WiFi de conectare Google Google- accesarea conectării portalului feroviar etc.



Cum se generează?

Ei bine, este o posibilitate deosebită să folosească același algoritm ca și un OTP. Dacă din întâmplare (foarte rar), șirul unic generat este deja generat înainte și a fost asociat cu un cod diferit, atunci se folosește un alt șir aleatoriu. În funcție de acum se pare că doar șase șiruri de personaje sunt generate la întâmplare pentru o identificare unică a tuturor codurilor. Va veni un moment în care toate cele șase șiruri de personaje posibile pot fi epuizate. Deci da, chiar și lucrurile legate de web se bazează foarte mult pe aleatoriu.

Probabilitate de coliziune a două OTP 



  • Lungimea OTP este de 6, iar dimensiunea setată a tuturor caracterelor posibile din OTP este de 62. Deci numărul total de seturi posibile ale perechii de OTP -uri sunt 62 12 .
  • Unele dintre ele sunt - [{aaaaaaaaa} {aaaaaaaaaaab} ..... {456789 456788} {456789 456789}]
  • Dar seturile posibile de pereche egală de OTP -uri sunt: 62 6 . Unele dintre ele sunt - [{aaaaaaaaa} {aaaaab aaaaaab} ..... {456788 456788} {456789 456789}]
  • De aici probabilitate de coliziune a două OTP -uri este: 62 6 / 62 12 = 1/62 6 = 1 /56800235584 = 1.7605561 -11

Deci probabilitate Din două OTP -uri care se ciocnește sunt la fel de mai puțin probabile ca existența vieții tale pe Pământ (raportul dintre numărul de ani în care vei trăi până la numărul de ani de la începutul universului și tot ceea ce există). Deci Yesotps sunt mult mai sigure decât parolele statice! Implementare  

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(1length+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 

Ieșire (poate fi diferită pentru fiecare rulare):

Your OTP is - 8qOtzy

Complexitate a timpului: O (n) unde n = numărul de caractere în OTP -ul nostru Spațiu auxiliar: În afară de șirul care are toate caracterele posibile, necesită o (n) spațiu pentru a deține OTP unde n = numărul de caractere din OTP -ul nostru, dacă vă place Geeksforgeeks și doriți să contribuiți, puteți scrie și un articol folosind write.geeksforgeeks.org Sau trimiteți-vă articolul la revizuirea-g-e-greeksforgeeks.org. Consultați articolul dvs. care apare pe pagina principală Geeksforgeeks și ajutați alți geeki. Vă rugăm să scrieți comentarii dacă găsiți ceva incorect sau doriți să împărtășiți mai multe informații despre subiectul discutat mai sus.