C++ 用c语言实现密码安全的程序?

C++ 用c语言实现密码安全的程序?,c++,c,C++,C,你知道如何在c或c中获得类似的功能吗++ 密码=****** 但最终系统得到了正确的密码(意味着真正的输入),但其他人看到了这一点。您需要告诉终端,它在输入过程中抑制了回声。也许您的操作系统已经提供了从终端读取密码的功能。它可能被称为getpassword或getpass或getpasswd 请参阅命令stty以获得终端选项的概述。要确认用户的密码,请特别使用(托管在kernel.org上,因此在编写时已关闭) 如果您的应用程序有自己的身份验证体系结构(大多数情况下不应该),请执行stty-ec

你知道如何在c或c中获得类似的功能吗++

密码=******


但最终系统得到了正确的密码(意味着真正的输入),但其他人看到了这一点。

您需要告诉终端,它在输入过程中抑制了回声。也许您的操作系统已经提供了从终端读取密码的功能。它可能被称为
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 );
  }