这是我在做课程设计时遇到的问题,如何在管理员进入系统时输入密码不会显示出来而泄露信息,这里使用到C语言函数库
#include <conio.h>
里面有一个输入函数 getch();这个函数跟getchar();功能几乎一样,不同点就是使用getch()输入字符时不会在控制台显示出来,所以正是利用这一点来隐藏密码的。
但要注意的是:它会吧键盘上所有按键都录入,包括撤销Backspace;而Backspace的ASIIC码值是8;所以只要加个判断即可解决!下面看代码:
printf("请输入管理员账号,密码:回车键结束\n");
printf("账号:");scanf("%s",id);
printf("密码:");
while((ch=getch())!='\r')
{
if(ch!=8)//不是回撤就录入
{
s[i]=ch;
putchar('*');//并且输出*号
i++;
}
else
{
putchar('\b');//这里是删除一个,我们通过输出回撤符 /b,回撤一格,
putchar(' ');//再显示空格符把刚才的*给盖住,
putchar('\b');//然后再 回撤一格等待录入。
i--;
}
}
password[i]='\0';
printf("%s",password);
if((!strcmp(s,PASSWORD))&&(!strcmp(id,ID)))
{//下面是系统内部
这是一个小技巧而已。觉得有点好玩,所以就写出来跟大家分享了。第一篇博客希望大家多多包涵。