首页 > 解决方案 > 在 QWERTY 键盘中检查连续字母的算法

问题描述

我需要用 Java 编写一个算法来验证密码字段。在所有基本控件(最小长度、lunghezza massima、字母数字...)之间,我必须检查密码是否不是由键盘上按顺序排列的字符组成的(例如QWERTY、YTREWQ、ASDFGH等)。最小密码长度为 8 个字符。密码在 4 位数字后被取消资格 我无法在我的数据库中创建一个带有“禁止”字符串的“字典表”,关于现有算法的任何提示,或者是否有一个库已经在做这样的检查?

标签: javaalgorithmpasswords

解决方案


嗯……我想到了一件事。

您可以尝试构建一个字母矩阵:

-----------------------
| q  w  e  r  t  y  ... 
| a  s  d  f  g  h  ... etc.
| z  x  c  v  b  n  ... 
-----------------------

给每个字母一个索引。例如,'q' 有 [1,1],'w' 有 [2, 1],'v' 有 [4,3] 等等。

现在,给定一个字符串,找出每个字母之间的距离并将它们相加。

示例:
给定一个字符串“sdgh”:

s-d, distance is 1
d-g, distance is 2
g-h, distance is 1

Total distance is: 4

现在你有一个 4/4 的比率。(四个字母,总距离是四个)。
这符合您的安全要求吗?回答这个问题,你就完成了。


推荐阅读