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);
}
}
Eline sağlık
Eline sağlık
Ö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.
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