int CheckPasswordStrength(WCHAR* p_wszpw,WCHAR* p_wszTime)//2011-01-01 16:05:43
{
int iRet = 1 ;
struct tm tm1;
int iScore = 0;
wstring wstrpw;
swscanf(p_wszTime, L"%4d-%2d-%2d %2d:%2d:%2d",
&tm1.tm_year,
&tm1.tm_mon,
&tm1.tm_mday,
&tm1.tm_hour,
&tm1.tm_min,
&tm1.tm_sec);//tm1.tm_mon
CTime t1(tm1.tm_year,tm1.tm_mon,tm1.tm_mday,0,0,0);
SYSTEMTIME sm;
GetLocalTime((&sm));
CTime t2(sm);
int iDiffDays = (t2-t1).GetDays();
if (iDiffDays > 90 && iDiffDays < 180 )
{
iRet = 2;
}
if (iDiffDays >= 180)
{
iRet = 3;
}
wstrpw.assign(p_wszpw);
bool bAllAlphabet = true;
bool bHasDigit = false;
bool bHasSymbol = false;
bool bHasAlphabet = false;
bool bHasUpper = false;
bool bHasLower = false;
int iDigitNum = 0;
int iSymbolNum = 0;
for (int i=0; i<wstrpw.length() && wstrpw.length() >0;i++)
{
WCHAR wszVal = wstrpw.data()[i];
if (i==0)
{
iScore =iScore + 5;
}
else if (i==4)
{
iScore =iScore + 5;
}
else if (i==7)
{
iScore =iScore + 15;
}
if (!isalpha(wszVal))
{
bAllAlphabet = false;
}
if (isdigit(wszVal))
{
bHasDigit=true;
iDigitNum++;
if (iDigitNum==1)
{
iScore=iScore+10;
}
else if (iDigitNum==3)
{
iScore=iScore+10;
}
}
else if (isalpha(wszVal))
{
bHasAlphabet=true;
if (isupper(wszVal))
{
bHasUpper=true;
}
if (islower(wszVal))
{
bHasLower=true;
}
}
else
{
iSymbolNum++;
if (iSymbolNum==1)
{
iScore=iScore+10;
}
else if (iSymbolNum==2)
{
iScore=iScore+15;
}
}
}
if ((bHasLower==true&&bHasUpper==false)||(bHasLower==false&&bHasUpper==true))
{
iScore = iScore + 10;
}
if ( bHasUpper == true && bHasLower == true)
{
iScore = iScore + 20;
}
if (bHasDigit == true && bHasSymbol == true && bHasAlphabet && bHasUpper == true && bHasLower == true )
{
iScore = iScore + 5;
}
else if (bHasDigit == true && bHasSymbol == true && bHasAlphabet )
{
iScore = iScore + 3;
}
else if (bHasDigit && bHasAlphabet )
{
iScore = iScore + 2;
}
if (iScore >= 80)
{
return iRet + 30;
}
if (iScore >= 50)
{
return iRet + 20;
}
if (iScore >= 0)
{
return iRet + 10;
}
return 0;
}
C++ 密码强度验证
最新推荐文章于 2024-09-26 10:45:22 发布