c#:如何生成长度为7或8个字符的唯一密码

本文关键字:8个 字符 密码 唯一 何生 成长 | 更新日期: 2023-09-27 17:48:57

我需要多次重复生成唯一密码,确保每次生成的密码都是唯一的,请帮助我

谢谢!

c#:如何生成长度为7或8个字符的唯一密码

这是另一个方法,它生成密码和线程安全…

    private string CryptedRandomString()
    {
        lock (this)
        {
            int rand = 0;
            byte[] randomNumber = new byte[5];
            RNGCryptoServiceProvider Gen = new RNGCryptoServiceProvider();
            Gen.GetBytes(randomNumber);
            rand = Math.Abs(BitConverter.ToInt32(randomNumber, 0));
            return ConvertIntToStr(rand);
        }
    }
    private string ConvertIntToStr(int input)
    {
        lock (this)
        {
            string output = "";
            while (input > 0)
            {
                int current = input % 10;
                input /= 10;
                if (current == 0)
                    current = 10;
                output = (char)((char)'A' + (current - 1)) + output;
            }
            return output;
        }
    }

现在你可以像这样调用这个方法:-

string GeneratedPassword = "";
GeneratedPassword = CryptedRandomString() + CryptedRandomString();
Console.WriteLine(GeneratedPassword.Substring(0,8));

现在你们都必须想知道为什么GeneratedPassword = CryptedRandomString() + CryptedRandomString();,我两次调用CryptedRamdomString()方法的原因只是为了确保它返回超过10个数字,以便更容易获得八个字符的密码,否则如果它被调用一次,那么有时它会生成少于八个字符的密码。

嗯,在使用这个方法之前,你必须考虑一件事,使用"RNGCryptoServiceProvider"生成随机数比random . next更耗时。但是"RNGCryptoServiceProvider"比"Random"安全得多。下一个"。

如果想每次都生成唯一的密码

将CurrentTIME和currentdate放在帐户中,因为这样可以创建新密码。

看看这个解决您的问题:生成一批随机密码

试试这个

http://www.yetanotherchris.me/home/2009/3/15/c-pronounceable-password-generator.html

我将为密码字母表定义一个可能的字符数组,然后在该数组中生成7或8个随机索引来创建密码。

如果您想保证每种字符类型的最小数量,则需要对其进行改进。

你说全局唯一字符串吗?

System.Guid.NewGuid().ToString()