SORU
3 NİSAN 2010, CUMARTESİ


Nasıl /dev/random'u kullanın veya C urandom için?

C. /dev/random /dev/urandom kullanmak istiyorum bunu Nasıl yapabilirim? Nasıl biri olursa lütfen söyleyin bilen varsa C bunları işlemek, nasıl yapabilirim bilmiyorum. Teşekkür ederim.

CEVAP
3 NİSAN 2010, CUMARTESİ


EDİTEğer arc4random sisteminizde mevcut ise, arc4random_buf yerine kullanmak isteyebilirsiniz. Kendi numaralarını şifreli-güvenli, jeneratör hızlı aptalca ve arabaşarısız olamaz. Bu açık farkla en iyi yolu oluşturmak için rastgele sayılar platformlarda destek (BSD sistemleri de dahil olmak üzere OS X/iOS, Android, programlar bu linki karşı LibreSSL, ama çok erken 2015, oldukça büyük değil Linux).

char myRandomData[50];
arc4random_buf(myRandomData, sizeof myRandomData);

Eğer arc4random ve türevleri sisteminizde mevcut değilse, eğer dosyalar gibi rastgele cihazları kullanabilirsiniz. Onlardan okuduğun ve rastgele veri almak. Buradaopen/read kullanıyorum, ama fopen/fread sadece iyi çalışmaya devam eder.

int randomData = open("/dev/random", O_RDONLY);
char myRandomData[50];
size_t randomDataLen = 0;
while (randomDataLen < sizeof myRandomData)
{
    ssize_t result = read(randomData, myRandomData   randomDataLen, (sizeof myRandomData) - randomDataLen);
    if (result < 0)
    {
        // error, unable to read /dev/random 
    }
    randomDataLen  = result;
}
close(randomData);

/dev/random sonunda tükeneceği rağmen dosya tanımlayıcısı kapatmadan önce daha birçok rasgele bayt okuyabilirsiniz. Bir kez o does, okuma işlemi iptal edilecek ve read kaç bayt başarıyla okundu nasıl geri dönecek. /dev/urandom asla blok ya da tüketiyor. (/dev/urandom da her zaman okumak çevresine ihtiyacın olmazdı yani istediğin bayt sayısını verecektir.)

/dev/random /dev/urandom arasında fark /dev/random çevresel gürültü aygıt sürücüleri rasgele sayılar oluşturmak için bir araya kullanmasıdır. /dev/urandom rasgele bir sayı verirtabanlıayrıca, entropi bit /dev/random mevcut olduğunda örtbas etmek için arkasındaki bölgede de yapalım bir algoritması vardır ama /dev/random. Hala şifreli olarak güvenli kabul ediliyor ve genel olarak /dev/random daha kullanmak için iyi bir fikirdir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • amc

    amc

    21 EYLÜL 2005
  • PhoneBuff

    PhoneBuff

    10 HAZİRAN 2011
  • thewinekone

    thewinekone

    17 Aralık 2005

İLGİLİ SORU / CEVAPLAR