Az egyszeri jelszó (OTP) egy olyan jelszó, amely csak egy bejelentkezési munkamenetre vagy tranzakcióra érvényes számítógépes rendszeren vagy más digitális eszközön. További részletekért lásd ez - Algoritmus Véletlenszerűen válassza ki a karaktereket minden lehetőségünkből, és hozzon létre egy karakterláncot a kívánt hosszúságból. Az OTP-k általában 6-7 karakter hosszúak, a 6-7 karakterben véletlenszerűség szinte garantálja a bejelentkezési módot.
Az OTP-ket széles körben használják olyan webhelyeken, mint a Facebook Google bejelentkezési wifi- A vasúti portál bejelentkezése stb.
Hogyan generálódik?
Nos, nagy esély van arra, hogy ugyanazt az algoritmust használják, mint az OTP. Ha véletlenszerűen (nagyon ritka), akkor a generált egyedi karakterláncot már korábban generálják, és egy másik kódhoz kapcsolódnak, akkor egy másik véletlenszerű karakterláncot használnak. A mostanában úgy tűnik, hogy csak hat karakterhúrot generálnak véletlenszerűen az összes kód egyedi azonosításához. Eljön az idő, amikor a lehetséges hat karakterhúr kimerülhet. Tehát igen, még a webes cuccok is erősen a véletlenszerűségre támaszkodnak.
nevezzen át egy könyvtárat Linuxon
Valószínűség két OTP ütközése
- Az OTP hossza 6, és az OTP összes lehetséges karakterének beállított mérete 62. Tehát az OTP -pár lehetséges halmazainak száma van 62 12 -
- Néhányuk: [{aaaaaaaaa} {aaaaaaaaaaaab} ..... {456789 456788} {456789 456789}]
- De az egyenlő pár OTP -k lehetséges halmazai a következők: 62 6 - Néhányuk: [{aaaaaaaaa} {aaaaab aaaaaab} ..... {456788 456788} {456789 456789}]
- Ezért a valószínűség két OTP ütközése: 62 6 / 62 12 = 1/62 6 = 1 /56800235584 = 1.7605561 -11
Tehát a valószínűség A két ütköző OTP -ből annyira kevésbé valószínű, mint a Földön való életed (az évek számának aránya az univerzum kezdetétől és minden létező évektől fogva élni fog. Végrehajtás
hálózati operációs rendszerCPP
// 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
Kimenet (minden futás esetén eltérő lehet):
Your OTP is - 8qOtzy
Idő bonyolultsága: O (n), ahol n = karakterek száma az OTP -ben Kiegészítő hely: Azon a karakterláncon kívül, amelyen minden lehetséges karakter, amelyre szükségünk van az O (n) helynek az OTP tartásához, ahol n = N = karakterek száma az OTP -ben, ha szereti a geeksforgeeks -t, és szeretne hozzájárulni, akkor is írhat egy cikket is. write.geekkforgeeks.org Vagy küldje el a cikkét a [email protected] címre. Lásd a cikkét, amely megjelenik a Geeksforgeeks főoldalán, és segítsen más geeksnek. Kérjük, írjon megjegyzéseket, ha valami helytelennek talál, vagy további információkat szeretne megosztani a fent tárgyalt témáról.