logo

Za ustvarjanje enekrat geslo ali edinstven identifikacijski URL

Enkratno geslo (OTP) je geslo, ki velja samo za eno prijavo ali transakcijo v računalniškem sistemu ali drugi digitalni napravi. Za več podrobnosti se nanašajo to . Algoritem Naključno izberite znake iz naših možnosti in iz nje ustvarite niz želene dolžine. OTP so na splošno dolgi 6-7 znakov, naključnost v 6-7 znakih pa skoraj zagotavlja varen način prijave.

OTP se pogosto uporabljajo na spletnih mestih, kot so Facebook Google prijava WiFi- dostop do prijave na železniške portale itd.



Kako se ustvari?

No, velika možnost je, da uporabljajo isti algoritem, kot je ustvarjen OTP. Če je po naključju (zelo redko) že ustvarjen edinstven niz in je povezan z drugo kodo, se uporabi še en naključni niz. Kot kaže, se zdi, da se le šest nizov znakov ustvari naključno za edinstveno identifikacijo vseh kod. Prišel bo čas, ko se bodo lahko izčrpali vsi možni šest znakov. Torej, da se tudi na spletne stvari močno opirajo na naključnost.

Verjetnost trka dveh OTP 



  • Dolžina OTP je 6 in velikost vseh možnih znakov v OTP je 62. Torej je skupno število možnih sklopov para OTP 62 12 .
  • Nekateri od njih so - [{aaaaaaaaa} {aaaaaaaaaaaab} ..... {456789 456788} {456789 456789}]
  • Toda možni sklopi enakega para OTP so: 62 6 . Nekateri od njih so - [{aaaaaaaaa} {aaaaab aaaaaab} ..... {456788 456788} {456789 456789}]
  • Od tod verjetnost trka dveh OTP je: 62 6 / 62 12 = 1/62 6 = 1 /56800235584 = 1.7605561 -11

Torej verjetnost Od dveh trkov OTP sta tako manj verjetno kot obstoj vašega življenja na zemlji (razmerje med številom let, ki jih boste živeli do števila let od začetka vesolja in vsega, kar obstaja). Torej, da so Yetotos bolj varni kot statična gesla! Izvajanje  

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 

Izhod (lahko za vsako vožnjo razlikuje):

Your OTP is - 8qOtzy

Časovna kompleksnost: O (n) kjer je n = število znakov v našem OTP Pomožni prostor: Poleg niza, ki ima vse možne znake, potrebujemo o (n) prostora, da zadržimo OTP, kjer je n = število znakov v našem OTP, če vam je všeč geeksforgeeks in želite prispevati Write.geeksforgeeks.org ali pošljite svoj članek na [email protected]. Oglejte si svoj članek, ki se pojavlja na glavni strani Geeksforgeeks in pomaga drugim. Prosimo, napišite komentarje, če se vam zdi kaj napačno ali želite deliti več informacij o zgoraj opisani temi.