Umut D.

Umut D.

Powered by Jekyll & Github

  • Programlar

  • rastgele-sifre-olusturucu

    Windows’un yanı sıra bazen Mac OS kullanan biri olarak Mac OS’un en sevdiğim özelliklerinden birisi dahili şifre üreticisi. Kullanıcılar ve Gruplar alanından hesabınıza veya diğer hesaplara şifre atamak için kullanabileceğiniz şifre oluşturma özelliği maalesef Windows’a dahil gelmiyor. Hal böyle olunca Windows’ta veya internette lazım olur ayağına basit bir şifre oluşturucu yazdım. Ortaya basit ve kullanışlı bir şifre oluşturucu çıktı. Üretim doğru yapılıyor mu diye Unit Test yazınca işler ve kod kontrolü daha kolaya geldi. Programın özelliklerine gelecek olursak;

    • Tekil veya farklı türlerde (Küçük Harf, Büyük Harf, Rakam, Sembol) sorunsuz şifre oluşturma,
    • En az 4, en fazla 48 karakter uzunluğunda şifre oluşturma,
    • 7 adet Unit Test (Proje boyutu 17MB’ye çıktığından Packages’ları eklemedim).
    Rastgele Şifre Oluşturucu
    Versiyon Durum
    Rastgele Şifre Oluşturucu (Proje)
    Lisans Arşiv
    Boyut: 97.3 KB Boyut: 476 KB
    Gereksinimler: .Net Framework 4 Gereksinimler: .Net Framework 4
    Platform: Microsoft Windows Programlama Dili: C#
    İndir: Link İndir: Link

    Ek : Hash kodlarının nasıl hesaplandığını görmeye gelenler için Karakter.cs ve Sifre.cs sınıflarındaki kodlar:

    namespace Rastgele_Sifre_Olustur
    {
        public class Karakter
        {
            public string BuyukHarfler => "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            public string KucukHarfler => BuyukHarfler.ToLowerInvariant();
            public string Rakamlar => "0123456789";
            public string Semboller => "!@#&()-+[{}]:;'.,?/*~$^=<>";
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Rastgele_Sifre_Olustur
    {
        public class Sifre
        {
            public int Uzunluk { get; set; }
            public Random SayiUret { get; }
            public StringBuilder Sonuc { get; }
    
            public Sifre(int uzunluk)
            {
                Uzunluk = uzunluk;
                SayiUret = new Random();
                Sonuc = new StringBuilder();
            }
    
            // Kaç adet tür seçildiyse (Örn. Küçük ve Büyük Harfler) o karakter türüne göre işlem yap
            public void Olustur(int seciliKutuSayisi, List<string> karakterTuru)
            {
                for (int i = seciliKutuSayisi - 1; i >= 0; i--)
                {
                    int sayi = SayiUret.Next(1, Uzunluk - i);
                    Uzunluk -= sayi;
                    Uret(sayi, karakterTuru.ElementAt(i));
    
                    if (i == 0)
                    {
                        Uret(Uzunluk, karakterTuru.ElementAt(i));
                        Karistir();
                        break;
                    }
                }
            }
    
            private void Uret(int adet, string tur)
            {
                for (int i = 0; i < adet; i++)
                {
                    int sayi = SayiUret.Next(0, tur.Length);
                    Sonuc.Append(tur[sayi]);
                }
            }
    
            private void Karistir()
            {
                char[] sifre = Sonuc.ToString().ToCharArray().OrderBy(x => Guid.NewGuid()).ToArray();
                string sifreyiKaristir = new string(sifre);
    
                Sonuc.Clear().Append(sifreyiKaristir);
            }
        }
    }