Heim > Backend-Entwicklung > C++ > Wie kann ich die Passworteingabe in C sicher erhalten, ohne dass eine Rückmeldung an die Konsole erfolgt?

Wie kann ich die Passworteingabe in C sicher erhalten, ohne dass eine Rückmeldung an die Konsole erfolgt?

DDD
Freigeben: 2024-12-20 05:59:12
Original
649 Leute haben es durchsucht

How Can I Securely Obtain Password Input in C   Without Echoing to the Console?

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

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

Verwendung

So unterdrücken Sie das Echo beim Abrufen des Passworts:

SetStdinEcho(false);
std::string password;
std::cin >> password;
SetStdinEcho(true);
Nach dem Login kopieren

Beispiel

#include <iostream>
#include <string>

int main()
{
    SetStdinEcho(false);

    std::string password;
    std::cin >> password;

    SetStdinEcho(true);

    std::cout << password << std::endl;

    return 0;
}
Nach dem Login kopieren

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage