密碼驗證連續多位相同或者順序字元引發的思考 md

2022-05-09 07:18:05 字數 1066 閱讀 2199

目錄雖然使用者對於這種複雜的密碼驗證恨之入骨,但是有時出於安全的考慮,我們系統不得不強制要求使用者設定更高強度的密碼。

如:不能連續出現多位相同或者連續的字元。

對於常規的驗證,我們通常使用正規表示式,所以我一開始也從這方面入手,但始終沒有乙個實現的思路。

後來看到有人用字元陣列,通過下標判斷是否連續,再加上偶然看到有人在討論 ascii 碼,靈機一動,結合這兩者就是乙個很好的實現。

簡單實現,如下所示:

import static org.junit.assert.*;

import org.junit.test;

public class maintest

/*** 是否存在連續 i 位順序字元

* @param str

* @param i 存在 i 位順序字元,i 應大於等於1

* @return 如果 i 位順序的字元,則返回 true,否則返回 false

*/private boolean isorderchar(string str, int i)

} else

t = chararr[j];

}return false;

}/**

* 字串中是否至少包含 i 位重複相同的字元

* @param str

* @param i i位重複數字,i 應大於等於1

* @return 如果包含 i 位重複相同的字元,則返回 true,否則返回 false

*/private boolean isrepeatchar(string str, int i)

} else

}return false;

}}

實現是很簡單的,但是如果執著在正規表示式,可能再嘗試很久都做不出來,而且明顯增加難度,也不是乙個好的實現方式。

字元陣列下標的實現方式,對於 1-9,a-z,a-z,雖然是有限的列舉,先不說好不好,自己寫起來就很煩。

作文最後一句,喊口號:多思考,多嘗試,多總結 。

期待你更好的實現分享

密碼驗證連續多位相同或者順序字元引發的思考

雖然使用者對於這種複雜的密碼驗證恨之入骨,但是有時出於安全的考慮,我們系統不得不強制要求使用者設定更高強度的密碼。如 不能連續出現多位相同或者連續的字元。對於常規的驗證,我們通常使用正規表示式,所以我一開始也從這方面入手,但始終沒有乙個實現的思路。後來看到有人用字元陣列,通過下標判斷是否連續,再加上...

正則 手機驗證,密碼驗證

是否由 26 個英文本母組成的字串 是否由 26 個英文本母的大寫組成的字串 是否由 26 個英文本母的小寫組成的字串 是否為數字 是否為中文 是否為手機號 是否電子郵件 是否為座機號 是否為身份證 密碼驗證 是否為qq號 是否為金額 是否為url 是否為ip 嚴格的身份證校驗 是否由 26 個英文...

密碼強弱驗證

function charmode in bittotal函式 計算出當前密碼當中一共有多少種模式 function bittotal num return modes checkstrong函式 返回密碼的強度級別 function checkstrong spw return bittotal ...