C의 안전한 비밀번호 입력
사용자 개인정보를 보호하려면 표준 입력을 통해 입력된 비밀번호가 콘솔에 반영되지 않도록 하는 것이 바람직한 경우가 많습니다. . 시스템에 구애받지 않는 접근 방식을 사용하여 에코를 비활성화하는 방법은 다음과 같습니다.
개요
이 문제는 Windows 및 UNIX 계열 운영 체제 모두에서 해결될 수 있습니다. 해결 방법은 표준 입력 설정을 수정하여 에코를 비활성화하는 것입니다.
Windows
Windows 시스템의 경우 Win32 API를 사용하세요.
#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); }
UNIX 계열 시스템
UNIX 계열 시스템의 경우 termios 라이브러리:
#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); }
사용
비밀번호를 검색하는 동안 에코를 억제하려면:
SetStdinEcho(false); std::string password; std::cin >> password; SetStdinEcho(true);
예
#include <iostream> #include <string> int main() { SetStdinEcho(false); std::string password; std::cin >> password; SetStdinEcho(true); std::cout << password << std::endl; return 0; }
위 내용은 콘솔에 에코되지 않고 C에서 비밀번호 입력을 안전하게 얻으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!