Maison >développement back-end >C++ >Comment puis-je obtenir en toute sécurité la saisie du mot de passe en C sans faire écho à la console ?
Saisie sécurisée du mot de passe en C
Pour protéger la confidentialité des utilisateurs, il est souvent souhaitable d'empêcher que les mots de passe saisis via la saisie standard ne soient renvoyés à la console . Voici comment désactiver l'écho à l'aide d'une approche indépendante du système :
Présentation
Ce problème peut être résolu sur les systèmes d'exploitation Windows et de type UNIX. La solution consiste à modifier les paramètres d'entrée standard pour désactiver l'écho.
Windows
Pour les systèmes Windows, utilisez l'API Win32 :
#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); }
Systèmes de type UNIX
Pour les systèmes de type UNIX, utilisez le termios bibliothèque :
#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); }
Utilisation
Pour supprimer l'écho lors de la récupération du mot de passe :
SetStdinEcho(false); std::string password; std::cin >> password; SetStdinEcho(true);
Exemple
#include <iostream> #include <string> int main() { SetStdinEcho(false); std::string password; std::cin >> password; SetStdinEcho(true); std::cout << password << std::endl; return 0; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!