Zum Hauptinhalt springen
clawam tools
Werkzeuge Dokumente Daoark EN Startseite Startseite / Entwicklerwerkzeuge › Startseite manifest.json = 0 || asc.indexOf(s4) >= 0 || rev.indexOf(s4) >= 0) return '连续/序列字符'; // 键盘行:qwerty/asdfgh/zxcvbn if ('qwertyuiop'.indexOf(s4) >= 0 || 'asdfghjkl'.indexOf(s4) >= 0 || 'zxcvbnm'.indexOf(s4) >= 0) return '键盘行字符'; } return null; } function checkStrength(pwd) { if (!pwd) return { score: 0, level: '极弱', issues: ['空密码'] }; var issues = []; var score = 0; // 长度得分(0-40) if (pwd.length < 6) { issues.push('长度不足 6'); score += 5; } else if (pwd.length < 8) { issues.push('长度 < 8'); score += 15; } else if (pwd.length < 12) { score += 25; } else if (pwd.length < 16) { score += 35; } else { score += 40; } // 字符多样性(0-40) var diversity = 0; if (/[a-z]/.test(pwd)) diversity++; if (/[A-Z]/.test(pwd)) diversity++; if (/[0-9]/.test(pwd)) diversity++; if (/[^a-zA-Z0-9]/.test(pwd)) diversity++; score += diversity * 10; if (diversity < 3) issues.push('字符类型少于 3 种'); // 常见密码减分 if (WEAK.indexOf(pwd.toLowerCase()) >= 0) { score -= 50; issues.push('在常见弱密码库中'); } // 常见模式 var pat = hasCommonPattern(pwd); if (pat) { score -= 15; issues.push('包含' + pat); } // 重复字符 if (/(.)\1{2,}/.test(pwd)) { score -= 10; issues.push('包含 3+ 连续重复字符'); } score = Math.max(0, Math.min(100, score)); var level = '极弱'; if (score >= 80) level = '极强'; else if (score >= 60) level = '强'; else if (score >= 40) level = '中'; else if (score >= 20) level = '弱'; var e = entropy(pwd); return { score: score, level: level, entropy: e, diversity: diversity, length: pwd.length, issues: issues }; } function doProcess() { try { var pwd = getVal('text-a'); var r = checkStrength(pwd); var out = '评分: ' + r.score + ' / 100, 强度: ' + r.level + '\n' + '长度: ' + r.length + ' 字符, 字符类型: ' + r.diversity + ' 种, 熵: ' + r.entropy.toFixed(2) + ' bits\n'; if (r.issues.length > 0) out += '建议改进: ' + r.issues.join(', '); else out += '无明显问题 '; showResult(out, ''); } catch (e) { showError('检测失败: ' + (e.message || e)); } } $('btn-main').addEventListener('click', function(e) { e.preventDefault(); doProcess(); }); $('btn-clear').addEventListener('click', function() { var inputs = document.querySelectorAll('input,textarea,select'); for (var i = 0; i < inputs.length; i++) { if (inputs[i].tagName === 'SELECT') inputs[i].selectedIndex = 0; else inputs[i].value = ''; } var ra = $('result-area'); ra.hidden = true; ra.style.display = 'none'; var em = $('error-msg'); em.hidden = true; em.style.display = 'none'; }); $('text-a').addEventListener('input', doProcess); })();