logo

Да бисте генерисали једну временску лозинку или јединствену идентификациону УРЛ адресу

Једнократна лозинка (ОТП) је лозинка која важи за само једну сесију пријаве или трансакције на рачунарском систему или другом дигиталном уређају. За више детаља погледајте ово . Алгоритам Насумично одаберите ликове из наших свега могућности и генерише низ жељене дужине од ње. ОТПС је углавном дугачка 6-7 знакова, а насумичност у 6-7 знакова готово гарантује сигуран начин пријављивања.

ОТП се широко користе на веб локацијама као што су Фацебоок Гоогле Сигн-ин ВиФи - Приступ железничким порталима за пријаву итд.



Како се генерише?

Па, то је велика могућност да користи исти алгоритам као што се генерише ОТП. Ако случајно (врло ретко) је већ генерисан јединствени низ који је већ генерисан пре и повезан је са другачијим кодом, а затим се користи још један случајни низ. Према сада се чини да се само шест жица знакова настаје насумично за јединствену идентификацију свих кодова. Доћи ће време када се могу исцрпити сви могући шест жица од шест знакова. Дакле да, чак и ствари које се односе на веб се такође увелике ослањају на случајност.

Вероватноћа судара два ОТПС-а 



  • Дужина ОТП је 6, а постављена величина свих могућих знакова у ОТП-у је 62. Дакле, укупан број могућих скупова пар ОТПС-а је 62 12 .
  • Неки од њих су - [{ааааааааааааааааб} ..... {456789 456788} {456789 456789}]
  • Али могући сетови једнаких пар Отпс-а су: 62 6 . Неки од њих су - [{АААААААААА} {АААААБ ААААААБ} ..... {456788 456788} {456789 456789}]
  • Отуда вероватноћа Судара два ОТПС-а је: 62 6 / 62 12 = 1/62 6 = 1/56800235584 = 1.7605561 -11

Тако вероватноћа Од два ОТПС судара су мање вероватна као и постојање вашег живота на Земљи (однос броја година које ћете живети у броју година од почетка свемира и свега што постоји) .СОТОТПС су начин сигурнији од статичких лозинки! Примена  

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 

Излаз (може бити различит за сваку вожњу):

Your OTP is - 8qOtzy

Сложеност времена: О (н) где н = број знакова у нашој тужилаштву Помоћни простор: Поред струна који има све могуће знакове, потребни смо О (Н) Простор за задржавање ОТП-а где н = број знакова у нашем ОТП-у ако вам се свиђају Геексфоргеекс и желите да допринесете, можете да напишете и чланак написати.геексфоргеекс.орг или пошаљите свој чланак на преглед-теам@геексфоргеекс.орг. Погледајте свој чланак који се појављује на главној страници Геексфоргеекс и помогне другим геекима. Напишите коментаре ако пронађете нешто погрешно или желите да поделите више информација о горе наведеној теми.