Maison développement back-end C++ Comment puis-je masquer la saisie de l'utilisateur depuis la console lors de la saisie du mot de passe ?

Comment puis-je masquer la saisie de l'utilisateur depuis la console lors de la saisie du mot de passe ?

Jan 01, 2025 pm 01:01 PM

How Can I Hide User Input from the Console During Password Entry?

Masquer les entrées utilisateur de l'entrée standard

Lors de la récupération d'informations sensibles telles que des mots de passe à partir de l'entrée standard, l'affichage des caractères saisis n'est pas souhaitable. Cet article explore les méthodes indépendantes de la plate-forme pour désactiver l'écho des caractères lors de la saisie.

Exemple de code

Considérez l'extrait de code suivant :

string passwd;
cout << "Enter the password: ";
getline(cin, passwd);

Ceci Le code invite l'utilisateur à saisir un mot de passe, mais les caractères saisis sont visiblement affichés. Pour masquer les entrées des utilisateurs, nous utilisons des techniques spécifiques à la plate-forme décrites ci-dessous.

Solutions spécifiques à la plate-forme

Windows

#ifdef WIN32
#include <windows.h>

Dans les systèmes Windows, SetConsoleMode peut être utilisé pour activer/désactiver l'écho des caractères. Désactivez l'écho en définissant ENABLE_ECHO_INPUT sur 0 :

SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), mode & ~ENABLE_ECHO_INPUT);

Linux/macOS

#else
#include <termios.h>

Pour les systèmes Linux et macOS, tcgetattr et tcsetattr sont utilisés pour récupérer et mettre à jour paramètres du terminal. Désactivez l'écho en effaçant le bit ECHO dans le champ c_lflag :

tty.c_lflag &^= ECHO;
tcsetattr(STDIN_FILENO, TCSANOW, &tty);

Code final

En combinant ces techniques, le code suivant fournit une solution multiplateforme pour désactiver caractère faisant écho lors de la saisie du mot de passe :

#include <iostream>
#include <string>

void SetStdinEcho(bool enable = true) {
  #ifdef WIN32
    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);
  #else
    struct termios tty;
    tcgetattr(STDIN_FILENO, &tty);
    if (!enable)
      tty.c_lflag &^= ECHO;
    else
      tty.c_lflag |= ECHO;

    (void)tcsetattr(STDIN_FILENO, TCSANOW, &tty);
  #endif
}

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!

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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment compiler et exécuter un programme C Comment compiler et exécuter un programme C Sep 16, 2025 am 05:29 AM

Installac compiler likeg usingpackageManagersordevelopmentToolsDenpeningSontheos.2.writeac programme etVeitwitha.cpppextension.3.compilethetrogramusingg hello.cpp-ohelotogenerateanexecuable.4

C Exemple d'allocateur personnalisé C Exemple d'allocateur personnalisé Sep 17, 2025 am 08:45 AM

L'allocateur personnalisé peut être utilisé pour contrôler le comportement d'allocation de mémoire des conteneurs C. 1. Le journal de journalisation dans l'exemple implémente la journalisation de l'opération de mémoire en surchargeant l'allocation, la transmission, la construction et la détruire des méthodes; 2. L'allocateur doit définir des modèles Value_Type et Rebind pour répondre aux exigences de conversion du type de conteneur STL; 3. L'allocateur déclenche la sortie du journal pendant la construction et la copie, ce qui est pratique pour suivre le cycle de vie; 4. Les applications réelles incluent des pools de mémoire, de la mémoire partagée, des outils de débogage et des systèmes intégrés; 5. Depuis C 17, Construct and Destroy peut être traité par STD :: ALLOCATOR_TRAITS par défaut

Comment exécuter une commande système en c Comment exécuter une commande système en c Sep 21, 2025 am 04:35 AM

Utilisez la fonction STD :: System () pour exécuter les commandes système, qui doivent inclure des fichiers d'en-tête et passer dans des commandes de chaîne de style C, telles que STD :: System ("LS-L"), et la valeur de retour est -1, ce qui signifie que le processeur de commande n'est pas disponible.

C Exemple de mot-clé volatil C Exemple de mot-clé volatil Sep 05, 2025 am 06:54 AM

Le volatile est utilisé pour indiquer au compilateur que la valeur de la variable peut être modifiée par des facteurs externes à tout moment et doit donc être relié à la mémoire à chaque fois. 1. Dans les systèmes embarqués, la valeur du registre matériel peut être modifiée de manière asynchrone par le matériel, et l'utilisation de volatile empêche le compilateur d'optimiser la lecture en une seule et sans fin de boucles. 2. Dans un processeur de signal, lorsque la variable globale est modifiée par le processeur de signal, elle doit être déclarée volatile, sinon le compilateur peut le mettre en cache dans le registre, ce qui fait que la boucle principale ne peut pas sentir les changements. 3.Laotile ne fournit pas de sécurité de threads, les scénarios multithreads doivent utiliser STD :: Locks atomiques ou mutex. 4. Les utilisations courantes incluent des variables partagées dans le matériel de cartographie de mémoire, le traitement du signal et les rappels asynchrones. 5. Utiliser

Comment utiliser une pile en C Comment utiliser une pile en C Sep 21, 2025 am 05:16 AM

La pile de C est un adaptateur de conteneur dans STL. Il suit le principe du retour à l'abri et doit inclure des fichiers d'en-tête; Ajouter des éléments en poussant, POP supprime l'élément supérieur et accède au haut du haut de la pile. Avant l'opération, vérifiez s'il est vide, qui est souvent utilisé dans des scénarios tels que l'évaluation de l'expression et le retour de retour.

Comment configurer un projet C avec CMake? Comment configurer un projet C avec CMake? Sep 18, 2025 am 01:04 AM

Créer une structure de répertoire de projet, y compris cMakelists.txt, src / et inclure /; 2. Écrivez CMakelists.txt, spécifiez la version CMake, le nom du projet, la norme C et ajouter des fichiers exécutables; 3. Utilisez mkdirbuild pour entrer dans le répertoire et exécuter cmake .. et cmake - build. pour la compilation; 4. Ajoutez plusieurs fichiers source via add_execuable et utilisez Target_include_Directories pour inclure le chemin du fichier d'en-tête; 5. Utilisez Find_package pour trouver des bibliothèques externes et lier avec Target_Link_Library; 6.

Comment implémenter un itérateur personnalisé en C Comment implémenter un itérateur personnalisé en C Sep 20, 2025 am 01:13 AM

La réponse est de définir une classe qui contient les alias et les opérations de type nécessaire. Tout d'abord, définissez la valeur_type, référence, pointeur, différence_type et iterator_category, puis implémentez les opérations de déréférence, d'incrément et de comparaison. Enfin, fournissez des méthodes begin () et end () dans le conteneur pour renvoyer l'instance itérateur, ce qui le rend compatible avec les algorithmes STL et la plage pour les boucles.

Comment désactiver les avertissements du compilateur en C Comment désactiver les avertissements du compilateur en C Sep 04, 2025 am 02:54 AM

La désactivation des avertissements du compilateur C peut être mis en œuvre avec des drapeaux spécifiques au compilateur, mais le problème sous-jacent doit être résolu plutôt que des avertissements supprimés. GCC et Clang prennent en charge -W pour désactiver tous les avertissements, ou en utilisant-wno pour désactiver des avertissements spécifiques, et peut également les supprimer temporairement dans le segment de code via # pragmagccdiagnosticpush / ignore / pop; MSVC utilise / wd globalement (tel que / wd4996), ou suppression locale de #pragmawarning (push) et #pragmawarning (désactiver: 4996); Il est recommandé d'utiliser le système (gcc / clang) ou / externe: je suis combiné avec / externe

See all articles