Maison >développement back-end >C++ >Comment puis-je lire en toute sécurité les mots de passe à l'aide de std :: cin sans faire écho à la console ?
Saisie sécurisée du mot de passe avec std::cin
Lors de l'acquisition d'informations utilisateur sensibles, telles que des mots de passe, il est crucial d'empêcher les caractères saisis de étant repris sur l'écran pour des raisons de confidentialité. Pour ce faire avec std::cin, des mécanismes spécifiques à la plate-forme sont utilisés.
Solution Windows :
Windows utilise la fonction SetConsoleMode pour basculer le comportement d'écho. L'extrait de code ci-dessous désactive l'écho en effaçant l'indicateur ENABLE_ECHO_INPUT :
#ifdef WIN32 #include <windows.h> ... HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); DWORD mode; GetConsoleMode(hStdin, &mode); mode &= ~ENABLE_ECHO_INPUT; SetConsoleMode(hStdin, mode); #endif
Solution Unix (Linux/macOS) :
Les systèmes basés sur Unix s'appuient sur le bibliothèque termios et sa fonction tcsetattr. Voici le code pour désactiver l'écho :
#else #include <termios.h> ... struct termios tty; tcgetattr(STDIN_FILENO, &tty); tty.c_lflag &= ~ECHO; tcsetattr(STDIN_FILENO, TCSANOW, &tty); #endif
Exemple d'utilisation :
Avec la fonction de désactivation de l'écho en place, voici comment utiliser std::cin pour lire un mot de passe en toute sécurité :
#include <iostream> #include <string> ... SetStdinEcho(false); std::string password; std::cin >> password; SetStdinEcho(true);
En employant ces méthodes spécifiques à la plate-forme, vous pouvez vous assurer que les mots de passe des utilisateurs ne sont pas répercutés sur l'écran, préservant à la fois la confidentialité et la sécurité de votre application.
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!