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 系統
#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); }
類UNIX 系統
類UNIX 系統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中文網其他相關文章!