Signatur
Beschreibung
gmp_random_bits erzeugt eine nicht-negative Zufallszahl, deren Wert maximal 2^bits - 1 beträgt. Das Ergebnis ist ein GMP-Objekt und damit für beliebig große Ganzzahlen geeignet, die über den nativen PHP-Integer-Bereich hinausgehen.
Die Funktion eignet sich gut für mathematische Berechnungen, Protokoll-Implementierungen oder Tests, bei denen Zufallszahlen einer bestimmten Bitgröße benötigt werden – etwa beim Erzeugen von Primzahlkandidaten oder beim Testen von GMP-Operationen. Für sicherheitskritische Anwendungen (z. B. kryptografische Schlüssel) sollte stattdessen random_bytes() oder eine darauf aufbauende Methode verwendet werden, da gmp_random_bits keine kryptografisch sichere Zufallsquelle verwendet.
Der Parameter bits muss eine positive ganze Zahl sein. Die erzeugte Zahl hat genau so viele Bits, d. h. sie liegt im Bereich [0, 2^bits - 1].
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $bits Pflicht | int | Anzahl der Bits der zu erzeugenden Zufallszahl. Muss eine positive ganze Zahl (> 0) sein. Der Rückgabewert liegt im Bereich [0, 2^bits - 1]. |
Rückgabewert
GMP-Objekt zurück, das eine nicht-negative Zufallszahl mit höchstens der angegebenen Bitanzahl repräsentiert. Wird ein ungültiger Wert für bits übergeben, wird ein ValueError (ab PHP 8.0) bzw. eine Warnung ausgelöst.Beispiele
Einfache Zufallszahl mit 64 Bit erzeugen
<?php
// GMP-Erweiterung wird benötigt
$zufallszahl = gmp_random_bits(64);
echo gmp_strval($zufallszahl) . PHP_EOL;
// Ausgabe: eine zufällige Zahl zwischen 0 und 2^64 - 1
echo 'Bitlänge: ' . strlen(gmp_strval($zufallszahl, 2)) . ' Bit' . PHP_EOL;
Primzahlkandidat mit 128 Bit erzeugen und prüfen
<?php
// Erzeuge 128-Bit-Zufallszahl als Primzahlkandidat
$kandidat = gmp_random_bits(128);
// Stelle sicher, dass die Zahl ungerade ist (einfachster Filter)
$kandidat = gmp_or($kandidat, gmp_init(1));
if (gmp_prob_prime($kandidat) > 0) {
echo 'Wahrscheinlich prim: ' . gmp_strval($kandidat) . PHP_EOL;
} else {
echo 'Nicht prim: ' . gmp_strval($kandidat) . PHP_EOL;
}
// Wichtig · Fallstricke
Sicherheitshinweis: gmp_random_bits verwendet intern die GMP-eigene Zufallsfunktion, die nicht kryptografisch sicher ist. Für sicherheitsrelevante Zwecke wie Schlüsselerzeugung oder Token-Generierung sollte random_bytes() verwendet und das Ergebnis ggf. in ein GMP-Objekt umgewandelt werden (z. B. via gmp_import()).
Der Parameter bits muss strikt positiv sein. Ein Wert von 0 oder negativen Werten führt ab PHP 8.0 zu einem ValueError.
Die Funktion ist seit PHP 5.6.3 verfügbar und setzt die Aktivierung der gmp-Erweiterung voraus.