C-实现终端输入五角星的密码

最近要不是客户提了1个很繁琐的需求,恐怕就没有这篇文章了。
原先编写的终端获取密码的方法是使用linux下的getpass函数来实现,该函数原型如下:

#include <unistd.h>
char *getpass(const char *prompt);

该函数有个不好的地方就是输入的密码不回显,根本不知道输入了多少位的密码。
于是提出了希望可以将输入的密码回显为密文的形式,比如1个星号或圆心。
不得不说这是1个很让人难以拒绝的要求,只好硬着头脑看下能不能实现。
另外,还要求能够支持跨平台,需要支持Windows和Linux主流操作系统。
后来发现,对于Windows可以利用conio.h头的_getch函数,而不是getch函数,因为后者在Visual Studio 2015中已经淘汰了,不建议使用了。为了安全考虑,于是选择了函数。
对于Linux,可以考虑使用termios.h下的termios结构体来完成对应的操作,该结构体已经是上个世界80年代的产物了,基本属于很久的技术了。
最终将写好的程序集成到Python 3中,可以使用下面的方式进行安装:

pip3 install terminal-password

安装完成后,使用下面的方式进行调用:

import terminal_password as password
b = password.get_password(u'\u2605')

函数get_password接收1个Unicode的字符,用于表示对应输出的符号。这里我们的五角星★的Unicode码是\u2605,当然也可以根据需要选择需要的符号。默认情况使用的是星号*进行输出。
下面是在Windows下的实际示例:
效果可以看到整个过程丝般顺畅,无论是按下BackSpace键还是输入密码的过程。
这样,总算让客户满意了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值