Start · Sprachen · PHP · Referenz · mcrypt_module_is_block_algorithm

mcrypt_module_is_block_algorithm

Funktion

Prüft, ob der angegebene Verschlüsselungsalgorithmus ein Blockalgorithmus (im Gegensatz zu einem Stromalgorithmus) ist.

seit PHP 4.0.2 Kategorie: crypto

Signatur

mcrypt_module_is_block_algorithm(string $algorithm, string $lib_dir = ''): bool

Beschreibung

mcrypt_module_is_block_algorithm() ermittelt, ob ein bestimmter Algorithmus ein Blockalgorithmus ist. Blockalgorithmen verschlüsseln Daten in festen Blöcken (z. B. 8 oder 16 Byte), während Stromalgorithmen Daten byteweise verarbeiten. Typische Blockalgorithmen sind AES (Rijndael), DES, 3DES und Blowfish.

Diese Information ist nützlich, wenn man generisch mit verschiedenen Algorithmen arbeitet und wissen möchte, ob ein Padding oder eine bestimmte Betriebsart (z. B. CBC, CFB) erforderlich ist – was typischerweise nur bei Blockalgorithmen relevant ist.

Der optionale Parameter lib_dir erlaubt es, ein benutzerdefiniertes Verzeichnis anzugeben, in dem die mcrypt-Module gesucht werden. Wird er weggelassen, wird das Standard-Modulverzeichnis der mcrypt-Bibliothek verwendet.

Achtung: Die gesamte mcrypt_*-Erweiterung wurde in PHP 7.1 als veraltet markiert und in PHP 7.2 entfernt. Für neuen Code sollte stattdessen openssl_* oder sodium_* verwendet werden.

Parameter

Name Typ Default Beschreibung
$algorithm Pflicht string Der Name des zu prüfenden Algorithmus, z. B. MCRYPT_RIJNDAEL_128, MCRYPT_DES oder 'rijndael-128' als String.
$lib_dir string Optionaler Pfad zum Verzeichnis, in dem die mcrypt-Modulbibliotheken gesucht werden. Wird dieser Parameter weggelassen oder als leerer String übergeben, wird das compiletime-Standardverzeichnis verwendet.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der angegebene Algorithmus ein Blockalgorithmus ist, andernfalls false.

Beispiele

Prüfung, ob AES ein Blockalgorithmus ist

<?php
// Prüfe für Rijndael-128 (AES), ob es ein Blockalgorithmus ist
$algorithm = 'rijndael-128';
if (mcrypt_module_is_block_algorithm($algorithm)) {
    echo "'{$algorithm}' ist ein Blockalgorithmus.\n";
} else {
    echo "'{$algorithm}' ist ein Stromalgorithmus.\n";
}
?>
'rijndael-128' ist ein Blockalgorithmus.

Dynamische Auswahl des Padding-Verhaltens anhand des Algorithmus-Typs

<?php
$algorithms = ['rijndael-128', 'des', 'arcfour'];

foreach ($algorithms as $algo) {
    $isBlock = mcrypt_module_is_block_algorithm($algo);
    echo $algo . ': ' . ($isBlock ? 'Block' : 'Strom') . "algorithmus\n";
    if ($isBlock) {
        $blockSize = mcrypt_module_get_algo_block_size($algo);
        echo "  -> Blockgröße: {$blockSize} Byte\n";
    }
}
?>
rijndael-128: Blockalgorithmus -> Blockgröße: 16 Byte des: Blockalgorithmus -> Blockgröße: 8 Byte arcfour: Stromalgorithmus

// Wichtig · Fallstricke

Deprecation: Die mcrypt-Erweiterung wurde in PHP 7.1.0 als veraltet (deprecated) eingestuft und in PHP 7.2.0 vollständig entfernt. Diese Funktion steht ab PHP 7.2 nicht mehr zur Verfügung.

Für modernen Code sollte openssl_get_cipher_methods() in Kombination mit den openssl_encrypt()/openssl_decrypt()-Funktionen oder die sodium_*-Funktionen der Libsodium-Erweiterung verwendet werden, da diese aktiv gewartet werden und aktuelle Sicherheitsstandards erfüllen.