1

我正在使用PasswordGenerator(2.05)包来生成密码。

其中一种方法允许我选择可以包含哪些特殊字符。

这是我的代码:

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 pwd = new Password(includeLowercase: i_includeLowercase,
                               includeUppercase: i_includeUppercase,
                               includeNumeric: i_includeNumeric,
                               includeSpecial: i_includeSpecial,
                               passwordLength: i_lengthOfPassword).IncludeSpecial("!@#$%^&*,");

        string passwordResult = pwd.Next();
        return passwordResult;
    }

实际结果是,有时我会收到一个密码,其中包含\我的应用程序不允许的特殊字符。

例如:2\8$Y!f0

如果生成器不包含这个角色,我会很高兴。

有什么解决方法吗?

4

1 回答 1

4

如果我没有错误地阅读代码,你实际上想要这个:

IPassword pwd = new Password(includeLowercase: i_includeLowercase,
                       includeUppercase: i_includeUppercase,
                       includeNumeric: i_includeNumeric,
                       includeSpecial: false,
                       passwordLength: i_lengthOfPassword);

if (i_includeSpecial)
{
    pwd = pwd.IncludeSpecial("!@#$%^&*,");
}

您需要includeSpecial在构造函数中设置为 false Password,否则(它调用的)构造函数PasswordSettings将已经添加了所有常用的特殊字符。

.NET 小提琴

于 2021-08-12T06:31:34.297 回答