将字符串转换为密码

时间:2017-10-13 15:12:46

标签: c# string methods console passwords

static string ReadPassword(int length, char c)

该方法应该允许您输入字符串作为密码。 长度是密码的最小长度, c 是屏幕上显示的每个密码数字。

输入一个至少包含8个字符的密码,以便在Main中使用:

string pwd = ReadPassword(8, '●')

用户输入他/她密码的字母。但是,在屏幕上,不显示字母,而是存储在c中的字符,例如子弹'●'。

我如何以这样的方式构建程序:它为控制台eaven中输入的每个字符写*,虽然我的方法在返回s结束;

2 个答案:

答案 0 :(得分:2)

你走了。

class Program {
        static void Main(string[] args) {
            char ch;int len;
            Console.WriteLine("Enter the Length of the Password: ");
            len = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Enter the Character for Password:");
            ch = Convert.ToChar(Console.Read());
            printPassword(len, ch);
            Console.Read();
        }
        public static void printPassword(int len,char ch) {
            char ch1;String pass="";
            int i;
            for (i = 0; i < len; i++) {
                pass += Console.ReadKey(true);
                Console.Write(ch);
            }
        }
    }

答案 1 :(得分:1)

您可以将光标位置设置为输入位置或使用ReadKey(true)试试这个:

class Program
{
    static void Main(string[] args)
    {
        Console.Write("Set password: ");
        var password = ReadPassword(8, 'o');
        Console.WriteLine();
        Console.WriteLine($"Your password is: {password}");
        Console.ReadKey();
    }

    static string ReadPassword(int length, char c)
    {
        var left = Console.CursorLeft;
        var top = Console.CursorTop;
        var password = new StringBuilder();
        for (int i = 0; i < length; i++)
        {
            password.Append(Console.ReadKey().KeyChar);
            Console.SetCursorPosition(left + i, top);
            Console.Write(c);
        }
        return password.ToString();
    }
}

您可以在此处找到文档:https://msdn.microsoft.com/en-us/library/system.console.readkey(v=vs.110).aspx