You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何实现两个密码强度的双重校验?

解决密码强度双重校验的Switch失效问题

你原来的代码之所以无法正常工作,核心问题出在switch的条件判断上:你用了||逻辑运算符,它会把两个GetPasswordStrength()的字符串结果转换成布尔值(true/false),但你的case分支都是字符串类型(比如"Very Weak"),两者完全不匹配,导致代码根本不会进入预期的分支。

下面是可行的实现方案,通过枚举将密码强度转为可比较的数值,取两个密码中的最低强度进行判断,完美实现双重校验的需求:

1. 定义密码强度枚举

首先创建一个枚举,把字符串形式的强度映射成有序的数值,这样方便后续比较:

enum PassStrength {
    Unchecked = 0, // 枚举建议保留默认初始值,避免未初始化的问题
    VeryWeak = 1,
    Weak = 2,
    Good = 3,
    Strong = 4,
    VeryStrong = 5
}

2. 添加字符串转枚举的转换函数

这个函数用来把原有的字符串强度结果转换成枚举对应的字符串,方便后续解析为枚举值:

public string GetPasswordStrenght1() {
    string valor = GetPasswordStrength();
    switch(valor) {
        case "Very Weak": return Convert.ToString(PassStrength.VeryWeak);
        case "Weak": return Convert.ToString(PassStrength.Weak);
        case "Good": return Convert.ToString(PassStrength.Good);
        case "Strong": return Convert.ToString(PassStrength.Strong);
        case "Very Strong": return Convert.ToString(PassStrength.VeryStrong);
        default: return Convert.ToString(PassStrength.Unchecked);
    }
}

3. 双重校验的主逻辑

获取两个密码的强度枚举值,取其中最低的强度进行判断,只要有一个密码强度不达标(低于Good)就触发错误提示:

pwdStrength.SetPassword(text_passmysql.Text);
pwdStrength1.SetPassword(text_adminpass.Text);

// 将字符串形式的强度解析为枚举值
PassStrength strSql = (PassStrength)Enum.Parse(typeof(PassStrength), pwdStrength.GetPasswordStrenght1());
PassStrength strAdm = (PassStrength)Enum.Parse(typeof(PassStrength), pwdStrength1.GetPasswordStrenght1());

// 取两个密码中强度最低的那个
PassStrength lowest = (PassStrength)Math.Min((Int32)strSql, (Int32)strAdm);

// 判断最低强度是否低于"Good"级别
if ((Int32)lowest < (Int32)PassStrength.Good) {
    MessageBox.Show("A password do MySQL é muito fraca, escolha um mais forte.\nApenas pode alterar a password MySQL para uma mais forte, caso contrário não será guardada.", "Configurações do Programa", MessageBoxButtons.OK, MessageBoxIcon.Error);
} else {
    // 执行后续操作
    // do something
}

这个方案的核心是利用枚举的数值特性来直观比较密码强度,确保只要两个密码中有一个强度不达标,就会触发错误提示,完全满足双重校验的需求。

内容的提问来源于stack exchange,提问作者Karbust

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:52:16