std::cin을 사용한 안전한 비밀번호 입력
비밀번호와 같은 민감한 사용자 정보를 획득할 때 입력된 문자를 방지하는 것이 중요합니다. 개인 정보 보호 문제로 인해 화면에 에코가 표시됩니다. std::cin을 사용하여 이를 수행하려면 플랫폼별 메커니즘이 사용됩니다.
Windows 솔루션:
Windows는 SetConsoleMode 기능을 활용하여 에코 동작을 전환합니다. 아래 코드 조각은 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
Unix(Linux/macOS) 해결책:
Unix 기반 시스템은 termios 라이브러리 및 해당 tcsetattr 함수. 에코를 끄는 코드는 다음과 같습니다.
#else #include <termios.h> ... struct termios tty; tcgetattr(STDIN_FILENO, &tty); tty.c_lflag &= ~ECHO; tcsetattr(STDIN_FILENO, TCSANOW, &tty); #endif
샘플 사용법:
에코 비활성화 기능이 있는 경우 std::cin을 사용하여 다음을 수행합니다. 안전하게 비밀번호 읽기:
#include <iostream> #include <string> ... SetStdinEcho(false); std::string password; std::cin >> password; SetStdinEcho(true);
이러한 플랫폼별 방법을 사용하면 다음을 보장할 수 있습니다. 사용자 비밀번호는 화면에 표시되지 않으므로 애플리케이션의 개인정보 보호와 보안이 모두 유지됩니다.
위 내용은 콘솔에 에코되지 않고 std::cin을 사용하여 비밀번호를 안전하게 읽을 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!