рдореИрдВрдиреЗ рдкрд╛рд╕рд╡рд░реНрдб рд╢рдХреНрддрд┐ рдореВрд▓реНрдпрд╛рдВрдХрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХреА, рдореБрдЭреЗ
Microsoft рдкрд╛рд╕рд╡рд░реНрдб рдкрд░реАрдХреНрд╖рдХ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде Habr├й рдкрд░ рдПрдХ
рд╡рд┐рд╖рдп рдорд┐рд▓рд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдПрдХ рдЫреЛрдЯреЗ рдЬреЗрдПрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдпрд┐рддреНрд╡ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдереАред рдХрд┐рд╕реА рдХреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдпрд╣ рдпрд╛ рд╡рд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреНрдпреЛрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рдХреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╣реИрдмреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рдирд┐рд╢рд╛рди рдХреЗ рдмрд╛рдж, рдореИрдВ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реВрдВрдЧрд╛ред
- рдорд╛рдиреНрдпрддрд╛ рдкрд╛рд╕рд╡реЙрдЪ.рдЬреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ ред
- рдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреБрдЫ рд╕рд░рд▓ рдЪреАрдЬреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдерд╛рдпрд┐рддреНрд╡ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВред
- Microsoft рдЖрдХрд░реНрд╖рдХ, рдЬрдЯрд┐рд▓ рдкрд╛рд╕рд╡рд░реНрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░,
рдХреЛрдб рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рджреЛ рдкреВрд░реА рдкрд╛рд╕рд╡рд░реНрдб рд╕реНрдЯреНрд░реЗрдВрде рдПрдирд╛рд▓рд╛рдЗрдЬрд░реНрд╕ рд╣реИрдВ - рд╡рд░реНрддрдорд╛рди рдПрдХ, рдХрд╛рдлреА рд╕рд░рд▓реАрдХреГрдд, рдФрд░ рдкреБрд░рд╛рдирд╛ рдПрдХ рдЧрд╣рд░рд╛ред
рдЪрд▓реЛ рд╡рд░реНрддрдорд╛рди рдПрдХ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рднрд╛рдЧ рдкреБрд░рд╛рдиреЗ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╣реЛрдЧрд╛ред
рдиреАрдЪреЗ рдореИрдВ рдЬреЗрдПрд╕ рдореЗрдВ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрддрд╛ рд╣реВрдВ (рдореИрдВрдиреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреАрдмрдЧ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬреЛ рдкрд╛рда рдореЗрдВ рдереЗ)ред
var alpha = "abcdefghijklmnopqrstuvwxyz"; var upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var upper_punct = "~`!@#$%^&*()-_+="; var digits = "1234567890"; var totalChars = 0x7f - 0x20; var alphaChars = alpha.length; var upperChars = upper.length; var upper_punctChars = upper_punct.length; var digitChars = digits.length; var otherChars = totalChars - (alphaChars + upperChars + upper_punctChars + digitChars); function GEId(sID) { return document.getElementById(sID); } function calculateBits(passWord) { if (passWord.length < 0) { return 0; } var fAlpha = false; var fUpper = false; var fUpperPunct = false; var fDigit = false; var fOther = false; var charset = 0; for (var i = 0; i < passWord.length; i++) { var char = passWord.charAt(i); if (alpha.indexOf(char) != -1) fAlpha = true; else if (upper.indexOf(char) != -1) fUpper = true; else if (digits.indexOf(char) != -1) fDigit = true; else if (upper_punct.indexOf(char) != -1) fUpperPunct = true; else fOther = true; } if (fAlpha) charset += alphaChars; if (fUpper) charset += upperChars; if (fDigit) charset += digitChars; if (fUpperPunct) charset += upper_punctChars; if (fOther) charset += otherChars; var bits = Math.log(charset) * (passWord.length / Math.log(2)); return Math.floor(bits); } function DispPwdStrength(iN, sHL) { if (iN > 4) { iN = 4; } for (var i = 0; i < 5; i++) { var sHCR = "pwdChkCon0"; if (i <= iN) { sHCR = sHL; } if (i > 0) { GEId("idSM" + i).className = sHCR; } GEId("idSMT" + i).style.display = ((i == iN) ? "inline" : "none"); } } function EvalPwdStrength(oF, sP) { var bits = calculateBits(sP); if (bits >= 128) { DispPwdStrength(4, 'pwdChkCon4'); } else if (bits < 128 && bits >= 64) { DispPwdStrength(3, 'pwdChkCon3'); } else if (bits<64 && bits>=56) { DispPwdStrength(2, 'pwdChkCon2'); } else if (bits<56) { DispPwdStrength(1, 'pwdChkCon1'); } else { DispPwdStrength(0, 'pwdChkCon0'); } }
рдирд┐рд╖реНрдХрд░реНрд╖ :
рддреБрдЪреНрдЫ рдХрд╛ рдорддрд▓рдм рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд╛рд╕рд╡рд░реНрдб рдХреА рддрд╛рдХрдд рдХреЗ рдХрдИ рдкрд╣рд▓реБрдУрдВ рдХреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирджреЗрдЦреА рдХрд░рддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢рдмреНрджрдХреЛрд╢ рд╣рдорд▓реЛрдВ рдпрд╛ рджреЛрд╣рд░рд╛рдпрд╛ рд╡рд░реНрдгред
рдЬрд╛рд░реА, рднрд╛рдЧ 2 рджреЗрдЦреЗрдВ