用c语言实现密码安全的程序
program to implement password security in c languge?
知道如何在c或c++中获得这样的功能吗?
密码= * * * * * * * *
但是最后系统得到了正确的密码(意味着真正的输入),但是其他人看到了这个
要确认用户的密码,请使用pam(官方页面托管在kernel.org上,因此在撰写本文时已关闭),特别是pam_authenticate
。
如果您的应用程序有自己的身份验证体系结构(大多数情况下,它不应该),执行stty -echo
,请求密码,然后执行stty echo
以恢复原始行为
您需要告诉终端它在输入期间抑制回显。也许您的操作系统已经提供了从终端读取密码的功能。它可能被称为getpassword
或getpass
或getpasswd
。
请参阅命令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 );
}
相关文章:
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 安全回调提供程序(SFINAE,std::正向和过载解析)
- 如何使用winsock在c++应用程序中实现安全套接字通信
- 窗口上信号处理程序的异步安全写入函数
- 如何以编程方式查找 Windows 上的活动安全提供程序
- 程序流并以安全而雄辩的方式正确返回Main()
- 使用Microsoft安全支持提供程序接口 (SSPI) 对消息进行加密和签名
- 正在通过程序安全连接到MySQL
- 在多线程程序中使用动态数组的头段安全吗
- LLVM:在程序内实现安全的多实例环境
- 基于局域网的应用程序和安全通道身份验证
- 可以归类为病毒的程序可能存在安全缺陷
- 内联 asm 分配给"FS:0":处理程序未注册为安全处理程序
- 在退出应用程序时安全退出Qt线程
- 在asio stackful协同程序中直接使用产卵是否安全
- 在程序中运行gcc的安全、跨平台的方式
- 单线程安全程序
- 如何以线程安全的方式退出 C++03 中的程序
- 安全使用来自程序不同部分的实体
- Cassandra 会话线程安全吗?(使用 CPP 驱动程序)