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

program to implement password security in c languge?

本文关键字:安全 程序 密码 实现 语言      更新时间:2023-10-16

知道如何在c或c++中获得这样的功能吗?

密码= * * * * * * * *

但是最后系统得到了正确的密码(意味着真正的输入),但是其他人看到了这个

要确认用户的密码,请使用pam(官方页面托管在kernel.org上,因此在撰写本文时已关闭),特别是pam_authenticate

如果您的应用程序有自己的身份验证体系结构(大多数情况下,它不应该),执行stty -echo,请求密码,然后执行stty echo以恢复原始行为

您需要告诉终端它在输入期间抑制回显。也许您的操作系统已经提供了从终端读取密码的功能。它可能被称为getpasswordgetpassgetpasswd

请参阅命令stty以获得终端选项的概述。

对于不使用库的实现,您可以使用getch来获取按下的字符,并为从getch获得的任何字符打印*,并使用任何键进行转义(这里我使用Enter)。

示例代码

  while(true) {
       ch = getch();
     if(ch== 13)   // ASCII Code for Enter Key 
         break;
     cout<<"*";
  }

关闭echo

http://www.cplusplus.com/forum/general/12256/

windows

#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 );
  }
posix

#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 );
  }