Start · Sprachen · PHP · Referenz · mcrypt_module_is_block_algorithm_mode

mcrypt_module_is_block_algorithm_mode

Funktion

Gibt an, ob ein bestimmter Verschlüsselungs-Modus ein Blockalgorithmus-Modus ist (z. B. <code>cbc</code>, <code>ecb</code>).

seit PHP 4.0.2 Kategorie: crypto

Signatur

mcrypt_module_is_block_algorithm_mode(string $mode, string $lib_dir = ''): bool

Beschreibung

mcrypt_module_is_block_algorithm_mode() prüft, ob der angegebene Modus ein Blockalgorithmus-Modus ist. Blockbasierte Modi wie cbc, ecb oder cfb arbeiten auf fixen Datenblöcken, während Strom-Modi wie stream byteweise arbeiten. Die Funktion gibt true zurück, wenn der Modus blockbasiert ist, andernfalls false.

Diese Funktion ist nützlich, wenn man zur Laufzeit entscheiden möchte, ob Padding oder eine bestimmte Blockgröße berücksichtigt werden muss. Bei blockbasierten Modi ist die Eingabe in der Regel auf ein Vielfaches der Blockgröße aufzufüllen, bei Strom-Modi hingegen nicht.

Der optionale Parameter lib_dir erlaubt die Angabe eines alternativen Verzeichnisses, in dem die mcrypt-Modul-Bibliotheken gesucht werden. Wird er weggelassen, wird das Standardverzeichnis der mcrypt-Installation verwendet.

Achtung: Die gesamte mcrypt-Erweiterung ist seit PHP 7.1 als veraltet markiert und wurde in PHP 7.2 vollständig entfernt. Für neue Projekte sollte stattdessen die openssl- oder sodium-Erweiterung verwendet werden.

Parameter

Name Typ Default Beschreibung
$mode Pflicht string Der Name des zu prüfenden Modus, z. B. 'cbc', 'ecb', 'cfb' oder 'stream'.
$lib_dir string Optionaler Pfad zum Verzeichnis, in dem die mcrypt-Modus-Bibliotheken gesucht werden. Wird der Parameter weggelassen oder als leerer String übergeben, wird das Standardverzeichnis der mcrypt-Installation verwendet.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der angegebene Modus ein Blockalgorithmus-Modus ist (z. B. cbc, ecb), andernfalls false (z. B. bei stream).

Beispiele

Prüfen ob cbc ein Block-Modus ist

<?php
// Prüft, ob der Modus 'cbc' ein Blockalgorithmus-Modus ist
$mode = 'cbc';
if (mcrypt_module_is_block_algorithm_mode($mode)) {
    echo "Der Modus '{$mode}' ist ein Blockalgorithmus-Modus.";
} else {
    echo "Der Modus '{$mode}' ist KEIN Blockalgorithmus-Modus.";
}
Der Modus 'cbc' ist ein Blockalgorithmus-Modus.

Vergleich zwischen Block- und Strom-Modus

<?php
$modi = ['cbc', 'ecb', 'cfb', 'stream'];

foreach ($modi as $mode) {
    $istBlock = mcrypt_module_is_block_algorithm_mode($mode);
    echo "Modus '{$mode}': " . ($istBlock ? 'Block-Modus' : 'Strom-Modus') . PHP_EOL;
}
Modus 'cbc': Block-Modus Modus 'ecb': Block-Modus Modus 'cfb': Block-Modus Modus 'stream': Strom-Modus

// Wichtig · Fallstricke

Deprecation: Die mcrypt-Erweiterung wurde in PHP 7.1 als veraltet markiert (E_DEPRECATED) und in PHP 7.2 vollständig entfernt. Diese Funktion steht in modernen PHP-Versionen nicht mehr zur Verfügung.

Für neue Projekte oder Migrationen sollte openssl_*-Funktionen (z. B. openssl_encrypt()) oder die sodium_*-API (libsodium, ab PHP 7.2 im Core) eingesetzt werden. Diese bieten aktiv gepflegte, sichere Implementierungen moderner Verschlüsselungsverfahren.

Blockbasierte Modi benötigen in der Regel Padding (z. B. PKCS#7), wenn die Eingabelänge kein Vielfaches der Blockgröße ist. Diese Funktion kann genutzt werden, um zur Laufzeit zu entscheiden, ob Padding notwendig ist.