Deaktivieren des Echos in std::cin für die Passworteingabe
In Szenarien, in denen vertrauliche Eingaben wie Passwörter vor Echo geschützt werden müssen, wird dies der Fall entscheidend, um die Sichtbarkeit von Zeichen während der Benutzereingabe zu unterdrücken. Dieser Artikel befasst sich mit betriebssystemunabhängigen Methoden zum Deaktivieren von Echo in std::cin, einem grundlegenden Standardeingabestream in C.
Beachten Sie den folgenden Codeausschnitt:
string passwd; cout << "Enter the password: "; getline(cin, passwd);
Dieser Code fordert die Der Benutzer muss zwar ein Passwort eingeben, gibt die eingegebenen Zeichen jedoch sichtbar wieder, wodurch die Eingabe anfällig für potenzielles Abhören ist. Um dieses Problem zu beheben, bieten die folgenden Lösungen sichere Möglichkeiten, Kennwortzeichen während der Eingabe zu verbergen.
Windows:
Für Windows-Systeme bietet die SetConsoleMode-Funktion die Kontrolle über die Standardeingabe widerhallend. Die Übergabe von ENABLE_ECHO_INPUT als Flag aktiviert das Echo, während seine Negierung es deaktiviert, um sicherzustellen, dass Passwörter während der Eingabe verborgen bleiben.
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); DWORD mode; GetConsoleMode(hStdin, &mode); mode &= ~ENABLE_ECHO_INPUT; SetConsoleMode(hStdin, mode);
POSIX:
Auf POSIX-kompatiblen Systemen werden die Funktionen tcgetattr und tcsetattr verwendet, um die Echo-Einstellung für stdin zu verwalten. Das Deaktivieren des ECHO-Flags unterdrückt das Echo und ermöglicht so eine sichere Passworteingabe.
struct termios tty; tcgetattr(STDIN_FILENO, &tty); tty.c_lflag &= ~ECHO; tcsetattr(STDIN_FILENO, TCSANOW, &tty);
Beispielverwendung:
Eine Beispielimplementierung, die beide Methoden umfasst:
#ifdef WIN32 #include <windows.h> #else #include <termios.h> #include <unistd.h> #endif void SetStdinEcho(bool enable = true) { #ifdef WIN32 // Windows implementation #else // POSIX implementation #endif } int main() { SetStdinEcho(false); string password; cin >> password; SetStdinEcho(true); cout << password << endl; return 0; }
Durch den Einsatz dieser Techniken können Entwickler die Passwortsicherheit effektiv verbessern, indem sie Echos verhindern und so ein sichereres Benutzereingabeerlebnis für vertrauliche Informationen gewährleisten Abruf.
Das obige ist der detaillierte Inhalt vonWie kann ich Echo in „std::cin' von C für die sichere Passworteingabe deaktivieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!