我想在使用写入密码时屏蔽我的密码*
。我将Linux GCC用于此代码。我知道一种解决方案是使用这样的getch()
功能
#include <conio.h>
int main()
{
char c,password[10];
int i;
while( (c=getch())!= '\n');{
password[i] = c;
printf("*");
i++;
}
return 1;
}
但是问题是这样GCC
不包括conio.h
文件,getch()
对我没用。有没有人有办法解决吗?
在Linux世界中,屏蔽通常不是用星号完成的,通常回显只是关闭,并且终端显示空白,例如,如果您使用su
或登录虚拟终端等。
有一个用于获取密码的库函数,它不会用星号掩盖密码,但会禁止将密码回显到终端。我从一本Linux书中删除了这本书。我相信它是posix标准的一部分
#include <unistd.h> char *getpass(const char *prompt); /*Returns pointer to statically allocated input password string on success, or NULL on error*/
getpass()函数首先禁用回显和终端特殊字符(例如中断字符,通常为Control-C)的所有处理。
然后,它打印提示所指向的字符串,并读取输入行,并返回以空终止的输入字符串,并删除尾随的换行符作为其函数结果。
谷歌搜索getpass()引用了GNU实现(应该在大多数linux发行版中)以及一些示例代码,用于在需要时实现自己的代码
http://www.gnu.org/s/hello/manual/libc/getpass.html
他们自己滚动的示例:
#include <termios.h>
#include <stdio.h>
ssize_t
my_getpass (char **lineptr, size_t *n, FILE *stream)
{
struct termios old, new;
int nread;
/* Turn echoing off and fail if we can't. */
if (tcgetattr (fileno (stream), &old) != 0)
return -1;
new = old;
new.c_lflag &= ~ECHO;
if (tcsetattr (fileno (stream), TCSAFLUSH, &new) != 0)
return -1;
/* Read the password. */
nread = getline (lineptr, n, stream);
/* Restore terminal. */
(void) tcsetattr (fileno (stream), TCSAFLUSH, &old);
return nread;
}
如果需要,您可以以此为基础进行修改以显示星号。
问题内容: 我有如下的bash脚本: 我希望当用户在终端上键入密码时,不应显示该密码(或应显示诸如*之类的内容)。我该如何实现? 问题答案: 只需向您的读取调用提供-s,如下所示:
问题内容: 我有一个类,要求输入用户名和密码来使应用程序中的用户生效。 在其中,我有2个 JTextField 对象,一个用于用户名输入,另一个用于密码输入。 它工作正常,但是我的问题是,当用户在pswdTextField中写入密码时,密码显示在其中。我想通过为组成插入密码的每个字母显示一个点,星号或类似字符来隐藏它。 怎么做? 问题答案: 而不是使用JTextField,请为您的pswdText
我需要在源代码中隐藏密码,有什么可能的方法来混淆密码,以降低反编译的风险? 例如
输入一个语句后按回车键,MATLAB自动在屏幕上显示结果,但如果该行命令是以";"结尾,则MATLAB仍会进行运算赋值,但不显示任何输出结果.这一点在生成复杂矩阵时特别有用.例如: A = magic(100);
问题内容: 我在文件系统上有两个脚本,第二个是jenkins作业。第二个脚本调用第一个并传递参数。参数包含密码参数。如何将密码隐藏到日志中?我试图通过使用exec命令隐藏输出,但是问题没有解决。 问题答案: 该面具密码插件做到了这一点。
本文向大家介绍Android实现动态显示或隐藏密码输入框的内容,包括了Android实现动态显示或隐藏密码输入框的内容的使用技巧和注意事项,需要的朋友参考一下 本文实例展示了Android实现动态显示或隐藏密码输入框内容的方法,分享给大家供大家参考之用。具体方法如下: 该功能可通过设置EditText的setTransformationMethod()方法来实现隐藏密码或者显示密码。 示例代码如下