Start · Sprachen · PHP · Referenz · mcrypt_enc_is_block_algorithm_mode

mcrypt_enc_is_block_algorithm_mode

Funktion

Prüft, ob der aktuell geöffnete Verschlüsselungsmodus blockweise arbeitet (z. B. CBC, CFB) oder strombasiert ist.

seit PHP 4.0.2 Kategorie: crypto

Signatur

mcrypt_enc_is_block_algorithm_mode(resource $td): bool

Beschreibung

mcrypt_enc_is_block_algorithm_mode() ermittelt, ob der Modus des übergebenen Verschlüsselungs-Deskriptors einen blockorientierten Algorithmus erwartet. Blockbasierte Modi wie CBC, ECB oder CFB arbeiten intern auf fixen Datenblöcken, während Strommodi (z. B. STREAM) byteweise verschlüsseln.

Die Funktion ist nützlich, wenn eine Anwendung generisch verschiedene Modi unterstützen soll und vor der Verarbeitung prüfen muss, ob ein Padding oder eine blockgerechte Datenlänge erforderlich ist. Sie gibt true zurück, wenn der Modus blockweise arbeitet, andernfalls false.

Das Ergebnis bezieht sich ausschließlich auf den Modus (z. B. CBC), nicht auf den eigentlichen Verschlüsselungsalgorithmus. Um zu prüfen, ob der Algorithmus selbst blockweise arbeitet, steht mcrypt_enc_is_block_algorithm() zur Verfügung.

Achtung: Die gesamte mcrypt-Erweiterung ist seit PHP 7.1 als deprecated markiert und wurde mit PHP 7.2 aus dem Kern entfernt. Für neue Projekte sollte stattdessen openssl_* oder die sodium_*-Funktionen verwendet werden.

Parameter

Name Typ Default Beschreibung
$td Pflicht resource Ein gültiger Verschlüsselungs-Deskriptor, der zuvor mit mcrypt_module_open() geöffnet wurde.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der geöffnete Modus blockweise arbeitet (z. B. CBC, ECB), oder false, wenn es sich um einen Strommodus handelt.

Beispiele

Prüfung auf blockbasierten Modus mit CBC

<?php
// Verschlüsselungs-Deskriptor für AES-128 im CBC-Modus öffnen
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');

if (mcrypt_enc_is_block_algorithm_mode($td)) {
    echo "Der Modus ist blockbasiert – Padding erforderlich.";
} else {
    echo "Der Modus ist strombasiert – kein Padding nötig.";
}

mcrypt_module_close($td);
?>
Der Modus ist blockbasiert – Padding erforderlich.

Prüfung auf Strommodus (STREAM)

<?php
// Deskriptor für RC4 im STREAM-Modus öffnen
$td = mcrypt_module_open(MCRYPT_ARCFOUR, '', MCRYPT_MODE_STREAM, '');

if (mcrypt_enc_is_block_algorithm_mode($td)) {
    echo "Blockbasierter Modus.";
} else {
    echo "Strommodus – byteweises Verschlüsseln, kein Padding nötig.";
}

mcrypt_module_close($td);
?>
Strommodus – byteweises Verschlüsseln, kein Padding nötig.

// Wichtig · Fallstricke

Deprecation: Die mcrypt-Erweiterung ist seit PHP 7.1 als veraltet markiert und seit PHP 7.2 nicht mehr im PHP-Kern enthalten. Für neue oder migrierte Projekte sollten ausschließlich openssl_encrypt()/openssl_decrypt() oder die modernen sodium_crypto_*-Funktionen verwendet werden.

Die Funktion unterscheidet sich von mcrypt_enc_is_block_algorithm(): Letztere prüft den Algorithmus, während mcrypt_enc_is_block_algorithm_mode() den Modus bewertet. Beispielsweise kann ein Blockalgorithmus wie AES in einem Strommodus-ähnlichen Betrieb (z. B. CTR, OFB) eingesetzt werden.