Sichere Passworteingabe in C
Um die Privatsphäre der Benutzer zu schützen, ist es oft wünschenswert, zu verhindern, dass über die Standardeingabe eingegebene Passwörter an die Konsole übertragen werden . So deaktivieren Sie das Echo mit einem systemunabhängigen Ansatz:
Übersicht
Dieses Problem kann sowohl auf Windows- als auch auf UNIX-ähnlichen Betriebssystemen behoben werden. Die Lösung besteht darin, die Standardeingabeeinstellungen zu ändern, um das Echo zu deaktivieren.
Windows
Für Windows-Systeme verwenden Sie die Win32-API:
#include <windows.h> void SetStdinEcho(bool enable = true) { HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); DWORD mode; GetConsoleMode(hStdin, &mode); if (!enable) mode &= ~ENABLE_ECHO_INPUT; else mode |= ENABLE_ECHO_INPUT; SetConsoleMode(hStdin, mode); }
UNIX-ähnliche Systeme
Für UNIX-ähnliche Systeme verwenden Sie die Begriffe Bibliothek:
#include <termios.h> #include <unistd.h> void SetStdinEcho(bool enable = true) { struct termios tty; tcgetattr(STDIN_FILENO, &tty); if (!enable) tty.c_lflag &= ~ECHO; else tty.c_lflag |= ECHO; (void)tcsetattr(STDIN_FILENO, TCSANOW, &tty); }
Verwendung
So unterdrücken Sie das Echo beim Abrufen des Passworts:
SetStdinEcho(false); std::string password; std::cin >> password; SetStdinEcho(true);
Beispiel
#include <iostream> #include <string> int main() { SetStdinEcho(false); std::string password; std::cin >> password; SetStdinEcho(true); std::cout << password << std::endl; return 0; }
Das obige ist der detaillierte Inhalt vonWie kann ich die Passworteingabe in C sicher erhalten, ohne dass eine Rückmeldung an die Konsole erfolgt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!