Signatur
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
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);
?>
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);
?>
// 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.