前言
现在对于前端APP的安全要求越来越高,所以很多APP都开发了自己的数字键盘,这么做对于安全性的提升个人总结有如下几点:
- 防止第三方键盘出现BUG,泄露用户支付密码。
- 自定义键盘可以根据自己的算法提高加密等级,比如的密码是123456,但是我可以在内存中存储为xxxxxx。
- Android 系统黑客只能获取点击屏幕位置,并不能直接获得该按钮的具体值。
- 可以自定义按键的点击效果,防止录屏获取支付密码。(用户体验不好)
- 可以每次点击更改按键位置,防止屏幕位置点击对比获取支付密码。(用户体验不好)
个人认为,如果不是安全要求很高的系统,满足上述前3点即可,毕竟用户体验也是很重要的。不过最好还是要根据实际具体情况分析。
密码键盘DEMO
Github地址:https://github.com/AdolphL/PayKeyboard
密码键盘DEMO解析
自定义键盘的技术点在于Canvas画图和点击事件的编写
画图
这个我就不多讲了,多看看API就可以了。键盘绘画主要逻辑在onDraw方法下,主要就是算每个按键的范围和按键不同状态的背景色不同体现点击效果,整体的刷新函数使用的是invalidate()并没有使用局部刷新,原因是使用invalidate(xx)好像在高版本Android设备上没有效果也就没有尝试了,感兴趣的同学可以了解下。