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 ?

Comment puis-je lire en toute sécurité les mots de passe à l'aide de std :: cin sans faire écho à la console ?

Susan Sarandon
Libérer: 2024-12-23 22:34:10
original
956 Les gens l'ont consulté

How Can I Securely Read Passwords Using std::cin Without Echoing to the 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
Copier après la connexion

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
Copier après la connexion

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal