Blog

.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);
    }
}

Ali UYSAL

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.

İlgili Makaleler

4 Yorum

  1. Örnek kod peş peşe çağrıldığında aynı parolayı üretecektir. Bunun önüne geçmek için “new Random(Guid.NewGuid().GetHashCode())” şeklinde seed değeri verilebilir.

    1. Yorumunuz için teşekkürler, buradaki örnek programcık her çalıştırıldığında farklı değerler üretir. Siz bir projenizde kullanmak istediğiniz de fonksiyonu her çağırdığınız da yine her fonksiyon çağrınızda size farklı random değerler üretecektir.
      Peş peşe çağrılması durumunu anlayamadım, bir örnekle peş peşe çağrılmasını pekiştirebilir miyiz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu