PasswordGenerator 2.05生成密码意外出现反斜杠特殊字符如何解决
问题原因
你当前的代码中调用IncludeSpecial("!@#$%^&*,")属于追加特殊字符逻辑,而非替换包默认的特殊字符集合。PasswordGenerator 2.05版本的默认特殊字符集合本身包含反斜杠\,这就是你会生成带反斜杠密码的核心原因。
可行解决方案
你可以选择以下任意一种方式解决问题,也可以组合使用多重保障:
- 方案1:清空默认特殊字符后仅添加允许的字符
先调用ClearSpecial()清空所有预设的特殊字符,再传入你允许的所有特殊字符,从根源上排除非法字符:public static string GetUniquePassword( int i_lengthOfPassword = 8, bool i_includeLowercase = true, bool i_includeUppercase = true, bool i_includeNumeric = true, bool i_includeSpecial = true) { var pwdBuilder = new Password( includeLowercase: i_includeLowercase, includeUppercase: i_includeUppercase, includeNumeric: i_includeNumeric, includeSpecial: i_includeSpecial, passwordLength: i_lengthOfPassword); // 先清空默认特殊字符,再添加你允许的特殊字符 if (i_includeSpecial) { pwdBuilder.ClearSpecial() .IncludeSpecial("!@#$%^&*,"); } string passwordResult = pwdBuilder.Next(); return passwordResult; } - 方案2:单独移除反斜杠字符
如果你想保留默认的其他特殊字符,仅排除反斜杠,直接调用RemoveSpecial方法即可:var pwd = new Password(/* 原有参数 */) .RemoveSpecial(@"\") .IncludeSpecial("!@#$%^&*,"); - 方案3:生成后二次校验兜底
可以增加校验逻辑,如果生成的密码包含反斜杠就重新生成,作为极端场景的兜底方案:public static string GetUniquePassword(/* 原有参数 */) { // 原有初始化逻辑 string passwordResult; do { passwordResult = pwd.Next(); } while (passwordResult.Contains(@"\")); return passwordResult; }
内容的提问来源于stack exchange,提问作者JumpIntoTheWater
相关产品推荐
相关产品推荐

