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
Freigeben: 2024-12-23 22:34:10
Original
956 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage