C#判斷密碼強(qiáng)度的方法
本文實(shí)例講述了C#判斷密碼強(qiáng)度的方法。分享給大家供大家參考。具體如下:
1.關(guān)于密碼強(qiáng)度
密碼強(qiáng)度有強(qiáng)弱之分,包含數(shù)字、字母和其他符號(hào)三者且長(zhǎng)度不小于10的密碼被稱為強(qiáng)密碼,只有其中一者或長(zhǎng)度不大于6的密碼是弱密碼,其他密碼是中等強(qiáng)度密碼。
2.判斷密碼強(qiáng)弱的函數(shù)
/// <summary>
/// 密碼強(qiáng)度
/// </summary>
private enum Strength
{
Invalid = 0, //無效密碼
Weak = 1, //低強(qiáng)度密碼
Normal = 2, //中強(qiáng)度密碼
Strong = 3 //高強(qiáng)度密碼
};
/// <summary>
/// 計(jì)算密碼強(qiáng)度
/// </summary>
/// <param name="password">密碼字符串</param>
/// <returns></returns>
private static Strength PasswordStrength(string password)
{
//空字符串強(qiáng)度值為0
if (password == "") return Strength.Invalid;
//字符統(tǒng)計(jì)
int iNum = 0, iLtt = 0, iSym = 0;
foreach (char c in password)
{
if (c >= '0' && c <= '9') iNum++;
else if (c >= 'a' && c <= 'z') iLtt++;
else if (c >= 'A' && c <= 'Z') iLtt++;
else iSym++;
}
if (iLtt == 0 && iSym == 0) return Strength.Weak; //純數(shù)字密碼
if (iNum == 0 && iLtt == 0) return Strength.Weak; //純符號(hào)密碼
if (iNum == 0 && iSym == 0) return Strength.Weak; //純字母密碼
if (password.Length <= 6) return Strength.Weak; //長(zhǎng)度不大于6的密碼
if (iLtt == 0) return Strength.Normal; //數(shù)字和符號(hào)構(gòu)成的密碼
if (iSym == 0) return Strength.Normal; //數(shù)字和字母構(gòu)成的密碼
if (iNum == 0) return Strength.Normal; //字母和符號(hào)構(gòu)成的密碼
if (password.Length <= 10) return Strength.Normal; //長(zhǎng)度不大于10的密碼
return Strength.Strong; //由數(shù)字、字母、符號(hào)構(gòu)成的密碼
}
3.Main函數(shù)調(diào)用
static void Main(string[] args)
{
string sPassword;
while (true)
{
Console.WriteLine("請(qǐng)輸入一個(gè)密碼:");
sPassword = Console.ReadLine();
switch (PasswordStrength(sPassword))
{
case Strength.Invalid: Console.WriteLine("無效密碼\n"); break;
case Strength.Weak: Console.WriteLine("低強(qiáng)度密碼\n"); break;
case Strength.Normal: Console.WriteLine("中強(qiáng)度密碼\n"); break;
case Strength.Strong: Console.WriteLine("高強(qiáng)度密碼\n"); break;
}
}
}
4.運(yùn)行結(jié)果:

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C# dump系統(tǒng)lsass內(nèi)存和sam注冊(cè)表詳細(xì)
這篇文章主要介紹了C# dump系統(tǒng)lsass內(nèi)存和sam注冊(cè)表,在這里選擇 C# 的好處是體積小,結(jié)合 loadAssembly 方便免殺,希望對(duì)讀者們有所幫助2021-09-09
C#實(shí)現(xiàn)的基于二進(jìn)制讀寫文件操作示例
這篇文章主要介紹了C#實(shí)現(xiàn)的基于二進(jìn)制讀寫文件操作,結(jié)合具體實(shí)例形式分析了C#以二進(jìn)制文件流形式針對(duì)文件進(jìn)行讀寫操作的相關(guān)技巧,需要的朋友可以參考下2017-07-07
C#實(shí)現(xiàn)String類型和json之間的相互轉(zhuǎn)換功能示例
這篇文章主要介紹了C#實(shí)現(xiàn)String類型和json之間的相互轉(zhuǎn)換功能,涉及C# json格式數(shù)據(jù)的構(gòu)造、轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
C#用Topshelf創(chuàng)建Windows服務(wù)的步驟分享
這篇文章主要給大家介紹了關(guān)于C#如何利用Topshelf創(chuàng)建Windows服務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
C#操作DataGridView獲取或設(shè)置當(dāng)前單元格的內(nèi)容
這篇文章介紹了C#操作DataGridView獲取或設(shè)置當(dāng)前單元格的內(nèi)容,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02

