笔试题:防止黑客获取到客户输入密码

本文介绍了一个计算特定密码输入时间的程序。通过模拟用户在特殊键盘布局下输入密码的过程,考虑到按键位置和等待时间等因素,计算出完整的输入时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了防止被黑客获取到客户输入的密码,某银行在琶陆软件上以屏幕输入法输入密码。该输入法有9个按钮。每个按钮上有不多于3个空母。字母有先后顺序。按第一个字母需
要用鼠标点击按钮一次。第二个字母需要点击2次,第3个字母需要点击3次。
若连续两个字母都在同一个按钮上。则输入第一个字母后需要等待一小段时间。
假设某客户输入习惯是∶点击按钮需要1单位时间,等待一小段时间为2单位时间。某次登陆的时候,9个按钮上的字母分别为 azc dwf gti jal mon pkr shu vex yb
求该客户输入他的密码的时间。
输入∶
该客户的密码都是小写字母[a-z].密码长度<=16

keys = ['azc', 'dwf', 'gti', 'jal', 'mon', 'pkr', 'shu', 'vex', 'yb']
def get_time(input_keys):
	if len(input_keys ) > 16:
		raise Exception('wrong password!!!')
	time = 0
	button_place = None  # 记录上一次点击按钮的位置 
	for place, button_key in enumerate(keys):
		for key in input_keys:
			if key in button_key:
				time = button_key.find(key)+time+1 # 查看输入在按钮按键的位子
				if place == button_place:
					time += 2 # 判断此密码字母是否是在同一个按键,是则等待两秒
				button_place = place  # 更新按钮当前按钮位置信息
	return time
input_keys = input('请输入密码:')
time = get_time(input_keys)
print(time)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值