Difference between revisions of "Dev random/de"

From Lazarus wiki
Jump to navigationJump to search
m
Line 1: Line 1:
{{Dev random}}<br />
+
In diesem Artikel handelt es sich um Unix Programmierung. Es geht in diesem Artikel und um das Erstellen einems zufälligen Initialwerts für den Zufallsgenerator der Funktion <b>random</b>.<br />
<br />
 
__TOC__
 
<br />
 
In diesem Artikel handelt es sich um Unix Programmierung und um das Erlangen von einem zufälligen Initialwert für den Zufallsgenerator der Funktion <b>random</b>.<br />
 
 
=Übersicht=
 
=Übersicht=
Mit <code> /dev/random </code> und <code> /dev/urandom </code> gibt es bei Unix und Unix basierenden Betriebsystemen zwei Schnittstellen, die Speicher, Laufwerke, Netzwerk-Dumps aus dem Kernel (ebenso wie Kryptografie-Hardware, wenn vorhanden und aktiviert) zu (Pseudo-) Zufallszahlen verarbeiten.<br />
+
Mit <code>/dev/random</code> und <code>/dev/urandom</code> gibt es bei Unix und Unix basierenden Betriebsystemen zwei Schnittstellen, die Speicher, Laufwerke und Netzwerk-Dumps aus dem Kernel (und soweit vorhanden und aktiviert Kryptografie-Harware) zu (Pseudo-) Zufallszahlen verarbeiten.<br />
 
<br />
 
<br />
Der Unterschied zwischen <code> /dev/random </code> und <code> /dev/urandom </code> liegt darin, das die Schnittstelle /dev/random unter bestimmten Voraussetzungen blockieren kann, was bei der Schnittstelle /dev/urandom nicht der Fall ist:
+
Der Unterschied zwischen <code>/dev/random</code> und <code>/dev/urandom</code> liegt darin, das die Schnittstelle <code>/dev/random</code> unter bestimmten Voraussetzungen blockieren kann, was bei der Schnittstelle <code>/dev/urandom</code> nicht der Fall ist:
* Während die Schnittstelle <code> /dev/random </code> Zufallszahlen zurück gibt, dann wartet Sie bis die Zahlen zufällig genug sind. In diesem Zeitraum blockiert die Schnittstelle.
+
* Wenn die Schnittstelle <code>/dev/random</code> Zufallszahlen zurück gibt, dann wartet Sie bis die Zahlen zufällig genug sind. In diesem Zeitraum blockiert die Schnittstelle.
* Die Schnittstelle <code> /dev/urandom </code> dagegen blockiert nicht, während sie Zufallszahlen zurückgibt. Die Zahlen, die diese Schnittstelle zurückgibt, sind weniger zufällig.
+
* Die Schnittstelle <code>/dev/urandom</code> dagegen blockiert nicht, wenn sie Zufallszahlen zurückgibt. Die Zahlen, die diese Schnittstelle zurückgibt, sind weniger zufällig.
 
<br />
 
<br />
Die Schnittstellen <code>/dev/random</code> oder <code>/dev/urandom</code> erstellen ähnliche Zufallswerte wie die Funktion [[doc:rtl/system/random.html|random]].
+
Die Verwendung von <code>/dev/random</code> oder <code>/dev/urandom</code> erlaubt es ähnlich Zufallswerte zu erstellen wie mit der Funktion [[doc:rtl/system/random.html|random]].
 
<br />
 
<br />
 
 
=Beispiel=
 
=Beispiel=
Um die Schnittstellen /dev/random und /dev/random in Free Pascal zu verwenden können wir folgenden code verwenden:
+
Um die Schnittstellen <code>/dev/random</code und <code>/dev/urandom</code> in Free Pascal zu verwenden können wir folgenden code verwenden:
 
<syntaxhighlight>
 
<syntaxhighlight>
 
procedure RandomSeed;
 
procedure RandomSeed;
Line 35: Line 30:
 
<br />
 
<br />
 
= Erklärung =
 
= Erklärung =
Wie fast alles in Unix oder Unix ähnlichen Betriebssystemen, ist ist eine Datei! So öffnen wir urandom als Datei und lesen eine Ganzzahl.<br />
+
Wie fast alles in Unix oder Unix ähnlichen Betriebssystemen, ist urandom eine Datei! So öffnen wir urandom als Datei und lesen eine Ganzzahl.<br />
 
<br />
 
<br />
Dann nehmen wir die Zufallszahl, die wir für die Systemvariable RandSeed erstellt haben und übergeben diese Zufallszahl der Systemvariablen RandSeed. Mit diesem Initialwert erstellt die Funktion <b>random</b> weitere Zufallszahlen. Ganz genauso wie Sie es mit der Funktion Randomize machen würde. Nur, das die Initialisierung vom Zufall abhängt und nicht aus der aktuellen Systemzeit des Computers ermittelt wird.<br />
+
Dann nehmen wir die Zufallszahl und übergeben diese der Systemvariablen RandSeed. Mit diesem Initialwert erstellt die Funktion <b>random</b> weitere Zufallszahlen. Ganz genauso wie Sie es mit der Funktion Randomize machen würde. Nur, das die Initialisierung vom Zufall abhängt und nicht aus der aktuellen Systemzeit des Computers ermittelt wird.<br />
 
<br />
 
<br />
 
=Siehe auch=
 
=Siehe auch=
 
* [[doc:rtl/system/random.html|random]]
 
* [[doc:rtl/system/random.html|random]]
 
* [[Generating Random Numbers/de|Generating Random Numbers]]
 
* [[Generating Random Numbers/de|Generating Random Numbers]]
<br />
 
<br />
 
  
 
{{AutoCategory}}[[Category:Unix/de]][[Category:Tutorials/de]]
 
{{AutoCategory}}[[Category:Unix/de]][[Category:Tutorials/de]]

Revision as of 20:00, 12 January 2015

In diesem Artikel handelt es sich um Unix Programmierung. Es geht in diesem Artikel und um das Erstellen einems zufälligen Initialwerts für den Zufallsgenerator der Funktion random.

Übersicht

Mit /dev/random und /dev/urandom gibt es bei Unix und Unix basierenden Betriebsystemen zwei Schnittstellen, die Speicher, Laufwerke und Netzwerk-Dumps aus dem Kernel (und soweit vorhanden und aktiviert Kryptografie-Harware) zu (Pseudo-) Zufallszahlen verarbeiten.

Der Unterschied zwischen /dev/random und /dev/urandom liegt darin, das die Schnittstelle /dev/random unter bestimmten Voraussetzungen blockieren kann, was bei der Schnittstelle /dev/urandom nicht der Fall ist:

  • Wenn die Schnittstelle /dev/random Zufallszahlen zurück gibt, dann wartet Sie bis die Zahlen zufällig genug sind. In diesem Zeitraum blockiert die Schnittstelle.
  • Die Schnittstelle /dev/urandom dagegen blockiert nicht, wenn sie Zufallszahlen zurückgibt. Die Zahlen, die diese Schnittstelle zurückgibt, sind weniger zufällig.


Die Verwendung von /dev/random oder /dev/urandom erlaubt es ähnlich Zufallswerte zu erstellen wie mit der Funktion random.

Beispiel

Um die Schnittstellen /dev/random</code und /dev/urandom in Free Pascal zu verwenden können wir folgenden code verwenden:

procedure RandomSeed;
var
  f : file of integer;
  i : integer;

begin
  i        := 0;
  filemode := 0;
  AssignFile(f, '/dev/urandom'); 
  reset (f,1);
  read (f,i);
  CloseFile (f);
  // belegen der Systemvariablen RandSeed mit der Zufallszahl
  RandSeed := i;
end;


Erklärung

Wie fast alles in Unix oder Unix ähnlichen Betriebssystemen, ist urandom eine Datei! So öffnen wir urandom als Datei und lesen eine Ganzzahl.

Dann nehmen wir die Zufallszahl und übergeben diese der Systemvariablen RandSeed. Mit diesem Initialwert erstellt die Funktion random weitere Zufallszahlen. Ganz genauso wie Sie es mit der Funktion Randomize machen würde. Nur, das die Initialisierung vom Zufall abhängt und nicht aus der aktuellen Systemzeit des Computers ermittelt wird.

Siehe auch