Vienreizēja parole (OTP) ir parole, kas ir derīga tikai vienai pieteikšanās sesijai vai darījumam datorsistēmā vai citā digitālā ierīcē. Lai iegūtu sīkāku informāciju, skatiet šis Apvidū Algoritms Nejauši izvēlieties rakstzīmes no mūsu visām iespējām un no tā ģenerējiet vēlamā garuma virkni. OTP parasti ir 6-7 rakstzīmes garas, un 6-7 rakstzīmēs nejaušība gandrīz garantē drošu pieteikšanās veidu.
OTP plaši izmanto vietnēs, piemēram, Facebook Google pierakstīšanās WiFi- piekļuvei dzelzceļa portāla pieteikšanās utt.
Kā tas tiek ģenerēts?
Nu, tā ir liela iespēja, ka viņi izmanto to pašu algoritmu, kā tiek ģenerēts OTP. Ja nejauši (ļoti reti), unikālā ģenerētā virkne jau tiek ģenerēta iepriekš un ir saistīta ar citu kodu, tiek izmantota vēl viena nejauša virkne. Kā šķiet, šķiet, ka visu kodu unikālai identificēšanai nejauši tiek ģenerētas tikai sešas rakstzīmju virknes. Pienāks laiks, kad visas iespējamās sešas rakstzīmju virknes var tikt izsmeltas. Tātad jā, pat ar tīmekli saistītie materiāli arī ļoti paļaujas uz nejaušību.
Varbūtība divu OTP sadursmes
- OTP garums ir 6, un visu iespējamo OTP iespējamo rakstzīmju iestatītais izmērs ir 62. Tātad kopējais iespējamo OTP komplektu skaits ir 62 12 Apvidū
- Daži no tiem ir - [{aaaaaaaaa} {aaaaaaaaaaaab} ..... {456789 456788} {456789 456789}]
- Bet iespējamie vienādu OTP pāri ir: 62 Ar Apvidū Daži no tiem ir - [{aaaaaaaaa} {aaaaab aaaaaab} ..... {456788 456788} {456789 456789}]
- Tātad varbūtība divu OTP sadursmes ir: 62 Ar / 62 12 = 1/62 Ar = 1 /56800235584 = 1,7605561 -11
Tātad varbūtība no diviem OTP sadursmes ir tikpat mazāk ticams kā jūsu dzīves esamība uz Zemes (gadu skaita attiecība, kurā jūs dzīvosit līdz gadu skaitam no Visuma sākuma un viss, kas pastāv). Tātad YesOtps ir daudz drošāks nekā statiskas paroles! Ieviešana
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
Izvade (katram skrējienam var būt atšķirīga):
Your OTP is - 8qOtzy
Laika sarežģītība: O (n) kur n = rakstzīmju skaits mūsu OTP Papildu telpa: Papildus virknei, kurai ir visas iespējamās rakstzīmes, mums ir nepieciešama o (n) telpa, lai noturētu OTP, kur n = rakstzīmju skaits mūsu OTP, ja jums patīk geeksforgeeks un vēlaties dot savu ieguldījumu, varat arī uzrakstīt rakstu, izmantojot Write.Geeksforgeeks.org Vai arī nosūtiet savu rakstu uz e-pastu [email protected]. Skatiet savu rakstu, kas parādās Geeksforgeeks galvenajā lapā, un palīdziet citiem geeks. Lūdzu, rakstiet komentārus, ja atrodat kaut ko nepareizu vai vēlaties dalīties ar vairāk informācijas par iepriekš apskatīto tēmu.