19 Ocak 2015 Pazartesi

Dev/urandom C# ve Python da kullanımı

Öncelikle bu yazımın hepinizin işine yaramasımı umuyorum.

Öncelikle skype altyapısını araştırırken dev/random la karşılaştım. İnceledim ve size de anlatmak istedim.

Öncelikle c# da anlatayım.

Random değişkenini bilirsiniz Random rnd = new Random(); diye tanımlanır fakat bu sistem
Cryptography clasını kullanıyor. Öncelikle import bölümüne ekleyelim 
 
using System.Security.Cryptography;
 
Sonra ise fonksiyon olarak yazalım ve her satırı tek tek açıklayayım
 
 
   private static int DevRandomUret()
        {
            int Sonuc = 0;
            RNGCryptoServiceProvider RandomNumaraOlusturucu = new RNGCryptoServiceProvider();//cryptoservisten RandomNumberGenerator ile değişkenimizi oluşturduk
            var tampon = new byte[4];//rasgele sayımızın byte değerlerine ulaşmak için byte dizesi oluşturduk
            RandomNumaraOlusturucu.GetBytes(tampon);//rasgele sayımızı byte türüne çevirdik ve tampona aktardık
            Sonuc = BitConverter.ToInt32(tampon, 0);//bitconverter clası ile de byte dizisini integere çevirip sonuç değişkenine atadık.(Byte Converter Hk Bilgi istiyorsanız http://tr.wikibooks.org/wiki/C_Sharp_Programlama_Dili/System_isim_alan%C4%B1#BitConverter_s.C4.B1n.C4.B1f.C4.B1 ) Adresini ziyaret edin.
            return Sonuc; // Sonuc Değişkenini geri döndürdük.
        }


Fonksiyonu yazdıktan sonra konsolda ekrana vermesi kaldı onun için de

Console.WriteLine(DevRandomUret().ToString());

yazmanız yeterli olacaktır. C# olarak güzel bir kod blogu. Projelerinizde uygulamanızı tavsiye ederim. Ancak ekrana verdiği değer büyük boyutta ise mod alma işlemi ile sonuç döndürebilirsiniz.


Pythona gelecek olursak aslında pythonda kullandığımız random değişkeni direk urandom türünde olduğu için çok basittir. direk kodlarla anlatayım isterseniz
 Önce random clasını import ediyoruz.
sonra değişkene random clasını aktarıyoruz.
en son satırda da random sayıyı üretiyoruz. Print deyerek de yazabilirsiniz. 
 
 
import random
rand = random.SystemRandom()
rand.randint(1,10)


Hiç yorum yok:

Yorum Gönder