Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Membaca Kata Laluan Dengan Selamat Menggunakan std::cin Tanpa Bergema ke Konsol?
Input Kata Laluan Selamat dengan std::cin
Apabila memperoleh maklumat pengguna yang sensitif, seperti kata laluan, adalah penting untuk menghalang aksara yang ditaip daripada sedang bergema pada skrin untuk kebimbangan privasi. Untuk mencapainya dengan std::cin, mekanisme khusus platform digunakan.
Penyelesaian Windows:
Windows menggunakan fungsi SetConsoleMode untuk menogol gelagat getaran. Coretan kod di bawah menetapkan gema dilumpuhkan dengan mengosongkan bendera 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
Penyelesaian Unix (Linux/macOS):
Sistem berasaskan Unix bergantung pada perpustakaan termios dan fungsi tcsetattrnya. Berikut ialah kod untuk mematikan gema:
#else #include <termios.h> ... struct termios tty; tcgetattr(STDIN_FILENO, &tty); tty.c_lflag &= ~ECHO; tcsetattr(STDIN_FILENO, TCSANOW, &tty); #endif
Penggunaan Contoh:
Dengan fungsi melumpuhkan gema, berikut ialah cara menggunakan std::cin to baca kata laluan dengan selamat:
#include <iostream> #include <string> ... SetStdinEcho(false); std::string password; std::cin >> password; SetStdinEcho(true);
Dengan menggunakan kaedah khusus platform ini, anda boleh memastikan bahawa kata laluan pengguna tidak bergema pada skrin, mengekalkan kedua-dua privasi dan keselamatan dalam aplikasi anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca Kata Laluan Dengan Selamat Menggunakan std::cin Tanpa Bergema ke Konsol?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!