Heim > Backend-Entwicklung > C++ > Wie kann ich Echo in „std::cin' von C für die sichere Passworteingabe deaktivieren?

Wie kann ich Echo in „std::cin' von C für die sichere Passworteingabe deaktivieren?

Barbara Streisand
Freigeben: 2024-12-21 09:06:11
Original
407 Leute haben es durchsucht

How Can I Disable Echo in C  's `std::cin` for Secure Password Input?

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

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

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

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

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!

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