C++ 用c语言实现密码安全的程序?
你知道如何在c或c中获得类似的功能吗++ 密码=******C++ 用c语言实现密码安全的程序?,c++,c,C++,C,你知道如何在c或c中获得类似的功能吗++ 密码=****** 但最终系统得到了正确的密码(意味着真正的输入),但其他人看到了这一点。您需要告诉终端,它在输入过程中抑制了回声。也许您的操作系统已经提供了从终端读取密码的功能。它可能被称为getpassword或getpass或getpasswd 请参阅命令stty以获得终端选项的概述。要确认用户的密码,请特别使用(托管在kernel.org上,因此在编写时已关闭) 如果您的应用程序有自己的身份验证体系结构(大多数情况下不应该),请执行stty-ec
但最终系统得到了正确的密码(意味着真正的输入),但其他人看到了这一点。您需要告诉终端,它在输入过程中抑制了回声。也许您的操作系统已经提供了从终端读取密码的功能。它可能被称为
getpassword
或getpass
或getpasswd
请参阅命令stty以获得终端选项的概述。要确认用户的密码,请特别使用(托管在kernel.org上,因此在编写时已关闭)
如果您的应用程序有自己的身份验证体系结构(大多数情况下不应该),请执行
stty-echo
,请求密码,然后执行stty-echo
,以恢复原始行为。对于在不使用库的情况下实现,您可以使用getch获得按下的字符,并对从getch获得的任何字符打印*并使用任何键进行转义(这里我使用Enter)
示例代码
while(true) {
ch = getch();
if(ch== 13) // ASCII Code for Enter Key
break;
cout<<"*";
}
while(true){
ch=getch();
if(ch==13)//Enter键的ASCII码
打破
不能关闭回波
窗户
#include <windows.h>
void echo( bool on = true )
{
DWORD mode;
HANDLE hConIn = GetStdHandle( STD_INPUT_HANDLE );
GetConsoleMode( hConIn, &mode );
mode = on
? (mode | ENABLE_ECHO_INPUT )
: (mode & ~(ENABLE_ECHO_INPUT));
SetConsoleMode( hConIn, mode );
}
#包括
无效回音(布尔开=真)
{
德沃德模式;
HANDLE hConIn=GetStdHandle(标准输入句柄);
GetConsoleMode(hConIn和模式);
模式=开启
?(模式|启用|回波|输入)
:(模式&~(启用回声输入));
设置控制台模式(hConIn,模式);
}
posix
#包括
#包括
无效回音(布尔开=真)
{
结构术语设置;
tcgetattr(标准文件号和设置);
settings.c_lflag=打开
?(settings.c|lflag|ECHO)
:(settings.c_lflag&~(ECHO));
tcsetattr(标准文件号、TCSANOW和设置);
}
是控制台程序还是GUI?@Pradeep是控制台程序
#include <termios.h>
#include <unistd.h>
void echo( bool on = true )
{
struct termios settings;
tcgetattr( STDIN_FILENO, &settings );
settings.c_lflag = on
? (settings.c_lflag | ECHO )
: (settings.c_lflag & ~(ECHO));
tcsetattr( STDIN_FILENO, TCSANOW, &settings );
}