.NET CORE Random Password

Merhabalar;
.NET Core kullanarak belirlediğimiz karakter tiplerinde rastgele şifreler oluşturabilmek için bir proje oluşturacağım.

Random oluşturmak için 3 yöntemimiz var, Next, NextBytes ve NextDouble.

Next yönetimi rastgele bir sayı döndürür,
NextBytes yöntemi rastgele sayılardan oluşan bir byte dizesi döndürür,
NextDouble yöntemi de 0.0 – 1.0 arasında rastgele bir double sayı döndürür.

Örneğin sadece verilen karakterlerden oluşan ve belirli bir uzunlukta olan rastgele bir parola oluşturmak istiyoruz;
Bunun için kodumuzda kullanacağımız karakterleri ve uzunluğu belirtiyoruz

private static string CreateRandomPassword(int length = 15)  
{  
    // Create a string of characters, numbers, special characters that allowed in the password  
    string validChars = "ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*?_-";  
    Random random = new Random();  
  
    // Select one random character at a time from the string  
    // and create an array of chars  
    char[] chars = new char[length];  
    for (int i = 0; i < length; i++)  
    {  
        chars[i] = validChars[random.Next(0, validChars.Length)];  
    }  
    return new string(chars);  
}  

Not: validChars içeriğini istediğimiz karakterlerle değiştirebiliriz.

.NET CORE için Program.cs içeriğimiz aşağıdaki gibi olacaktır.

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(CreateRandomPassword());
        Console.WriteLine(CreateRandomPassword(10));
        Console.WriteLine(CreateRandomPassword(30));

        Console.WriteLine(CreateRandomPasswordWithRandomLength());

        Console.ReadKey();
    }


    // Default size of random password is 15  
    private static string CreateRandomPassword(int length = 15)
    {
        // Create a string of characters, numbers, special characters that allowed in the password  
        string validChars = "ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*?_-";
        Random random = new Random();

        // Select one random character at a time from the string  
        // and create an array of chars  
        char[] chars = new char[length];
        for (int i = 0; i < length; i++)
        {
            chars[i] = validChars[random.Next(0, validChars.Length)];
        }
        return new string(chars);
    }

    private static string CreateRandomPasswordWithRandomLength()
    {
        // Create a string of characters, numbers, special characters that allowed in the password  
        string validChars = "ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*?_-";
        Random random = new Random();

        // Minimum size 8. Max size is number of all allowed chars.  
        int size = random.Next(8, validChars.Length);

        // Select one random character at a time from the string  
        // and create an array of chars  
        char[] chars = new char[size];
        for (int i = 0; i < size; i++)
        {
            chars[i] = validChars[random.Next(0, validChars.Length)];
        }
        return new string(chars);
    }
}

Burada oluşturduğum projeyi Github adresimde bulabilirsiniz.

IT alanında 16 sene önce donanım ile başlayan tecrübem, network ve sonrasında iş analizi, yazılım geliştirme ve proje yöneticiliği alanlarında devam etmiştir. Endüstriyel yazılımlar, sahadan veri toplama ve analizleri, otomatik etiketleme ve barkod sistemleri, otomatik tartım ve robotik konularında tecrübe sahibiyim. Sanayi 4.0 kapsamında imalat sanayinin dijital dönüşümünde çok fazla projenin hayata geçmesini sağladım. Open Source projelerle uzun süre ilgilendim, analiz ve implementasyonu konularında tecrübe edindim. Bunlar dışında hobi amacıyla başlasam da sonradan ürüne dönüşen, geliştirme kartları ile farklı çalışmalarım olmuştur. Raspberry Pi üzerinde yaptığım donanımsal ve yazılımsal işler ile çok farklı ürünler ortaya çıkartarak tecrübe edindim.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>