为了安全,有的有修改密码校验要求,密码不能是键盘上了连续的3个及以上字符,无论横着的(qwe或者ewq)还是竖着的(qaz或者zaq)。以下主要参考博客:https://blog.csdn.net/chenlycly/article/details/90692006
也算站在了这位仁兄的肩膀上了吧,谢谢。皮一下~。
功能详述:可进行密码是否包含键盘列连续或行连续检测,密码长度小于等于8位不能键盘连续3个及以上字母,数字,特殊字符,9位不能键盘连续4个但是可以连续3个,10位不可键盘连续5个但能4个,依次类推。
1. 原理:
用两个与传入密码长度相等的一维数组(Row行数组,Column列数组)
按密码顺序在二维键盘数组中查找每个字符,找到了则用
一维行列数组分别存放密码中每个字符的行号和列号
然后循环分析行号和列号是否满足二维键盘数组的值来判断是否连续
2. 实现代码
BOOL IsKeyBoardContinuousChar( LPCTSTR lpStr )
{
if ( lpStr == NULL || _tcslen(lpStr) == 0 )
{
return FALSE;
}
// 注意,下面的键盘字符表都只列出小写字符,判断前会将输入字符中的
// 大写字母都转换成小写字母
// 非shift键盘字符表
TCHAR aaCharTable1[4][13] =
{ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', '\0',
'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '['