Input Kata Laluan Selamat dalam C
Untuk melindungi privasi pengguna, selalunya wajar untuk menghalang kata laluan yang dimasukkan melalui input standard daripada digema ke konsol . Begini cara untuk melumpuhkan gema menggunakan pendekatan agnostik sistem:
Ikhtisar
Isu ini boleh ditangani pada sistem pengendalian seperti Windows dan UNIX. Penyelesaiannya melibatkan pengubahsuaian tetapan input standard untuk melumpuhkan gema.
Windows
Untuk sistem Windows, gunakan API Win32:
#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); }
Sistem seperti UNIX
Untuk sistem seperti UNIX, gunakan termios perpustakaan:
#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); }
Penggunaan
Untuk menyekat gema semasa mendapatkan kata laluan:
SetStdinEcho(false); std::string password; std::cin >> password; SetStdinEcho(true);
Contoh
#include <iostream> #include <string> int main() { SetStdinEcho(false); std::string password; std::cin >> password; SetStdinEcho(true); std::cout << password << std::endl; return 0; }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Input Kata Laluan dengan Selamat dalam C Tanpa Bergema ke Konsol?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!