Heim >Backend-Entwicklung >C++ >Wie kann ich Passwörter mit std::cin sicher lesen, ohne dass ein Echo an die Konsole erfolgt?

Wie kann ich Passwörter mit std::cin sicher lesen, ohne dass ein Echo an die Konsole erfolgt?

Susan Sarandon
Susan SarandonOriginal
2024-12-23 22:34:10985Durchsuche

How Can I Securely Read Passwords Using std::cin Without Echoing to the Console?

Sichere Passworteingabe mit std::cin

Beim Erfassen vertraulicher Benutzerinformationen, wie z. B. Passwörter, ist es wichtig, die eingegebenen Zeichen zu verhindern wird aus Datenschutzgründen auf dem Bildschirm angezeigt. Um dies mit std::cin zu erreichen, werden plattformspezifische Mechanismen eingesetzt.

Windows-Lösung:

Windows verwendet die SetConsoleMode-Funktion, um das Echoverhalten umzuschalten. Mit dem folgenden Codeausschnitt wird das Echo deaktiviert, indem das Flag ENABLE_ECHO_INPUT gelöscht wird:

#ifdef WIN32
#include <windows.h>

...

HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
DWORD mode;
GetConsoleMode(hStdin, &mode);
mode &= ~ENABLE_ECHO_INPUT;
SetConsoleMode(hStdin, mode);
#endif

Unix (Linux/macOS) Lösung:

Unix-basierte Systeme basieren auf dem termios-Bibliothek und ihre tcsetattr-Funktion. Hier ist der Code zum Deaktivieren des Echos:

#else
#include <termios.h>

...

struct termios tty;
tcgetattr(STDIN_FILENO, &tty);
tty.c_lflag &= ~ECHO;
tcsetattr(STDIN_FILENO, TCSANOW, &tty);
#endif

Beispielverwendung:

Wenn die Echo-Deaktivierungsfunktion vorhanden ist, erfahren Sie hier, wie Sie std::cin verwenden, um Ein Passwort sicher lesen:

#include <iostream>
#include <string>

...

SetStdinEcho(false);
std::string password;
std::cin >> password;
SetStdinEcho(true);

Durch den Einsatz dieser plattformspezifischen Methoden können Sie sicherstellen, dass Benutzerpasswörter nicht weitergegeben werden auf dem Bildschirm, wodurch sowohl Privatsphäre als auch Sicherheit in Ihrer Anwendung gewahrt bleiben.

Das obige ist der detaillierte Inhalt vonWie kann ich Passwörter mit std::cin sicher lesen, ohne dass ein Echo an die Konsole erfolgt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn