Start · Sprachen · PHP · Referenz · mcrypt_enc_get_block_size

mcrypt_enc_get_block_size

Funktion

Gibt die Blockgröße (in Bytes) des Verschlüsselungsalgorithmus zurück, der mit dem übergebenen mcrypt-Deskriptor geöffnet wurde.

seit PHP 4.0.2 Kategorie: crypto

Signatur

mcrypt_enc_get_block_size(resource $td): int

Beschreibung

mcrypt_enc_get_block_size() liefert die Blockgröße des Verschlüsselungsalgorithmus, der durch den mcrypt-Deskriptor $td repräsentiert wird. Die Blockgröße ist die Anzahl der Bytes, die ein Algorithmus im Blockchiffre-Modus in einem Schritt ver- oder entschlüsselt.

Die Funktion ist nützlich, wenn Padding oder IV-Berechnung manuell durchgeführt werden müssen — beide sind direkt von der Blockgröße des verwendeten Algorithmus abhängig. Zum Beispiel benötigt AES eine Blockgröße von 16 Bytes.

Der Deskriptor $td muss zuvor mit mcrypt_module_open() geöffnet worden sein. Nach der Verwendung sollte der Deskriptor mit mcrypt_module_close() wieder freigegeben werden.

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

Parameter

Name Typ Default Beschreibung
$td Pflicht resource Ein mcrypt-Deskriptor, der zuvor mit mcrypt_module_open() geöffnet wurde.

Rückgabewert

Typ
int
Beschreibung
Gibt die Blockgröße des verwendeten Algorithmus in Bytes als Integer zurück.

Beispiele

Blockgröße von AES (Rijndael-128) ermitteln

<?php
// Algorithmus-Deskriptor öffnen
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');

// Blockgröße des Algorithmus ermitteln
$blockSize = mcrypt_enc_get_block_size($td);
echo "Blockgröße: " . $blockSize . " Bytes" . PHP_EOL;

// Deskriptor wieder schließen
mcrypt_module_close($td);
?>
Blockgröße: 16 Bytes

Blockgröße zur Padding-Berechnung nutzen

<?php
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');

$blockSize = mcrypt_enc_get_block_size($td);
$data = 'Geheime Nachricht';

// PKCS7-Padding berechnen
$padLength = $blockSize - (strlen($data) % $blockSize);
$paddedData = $data . str_repeat(chr($padLength), $padLength);

echo "Originaldaten-Länge: " . strlen($data) . " Bytes" . PHP_EOL;
echo "Gepaddte Länge: " . strlen($paddedData) . " Bytes" . PHP_EOL;
echo "Blockgröße: " . $blockSize . " Bytes" . PHP_EOL;

mcrypt_module_close($td);
?>
Originaldaten-Länge: 17 Bytes Gepaddte Länge: 32 Bytes Blockgröße: 16 Bytes

// Wichtig · Fallstricke

Deprecation-Hinweis: Die mcrypt-Erweiterung wurde in PHP 7.1 als veraltet (deprecated) markiert und in PHP 7.2 vollständig aus dem Kern entfernt. mcrypt_enc_get_block_size() steht in PHP 7.2+ nicht mehr zur Verfügung.

Für moderne PHP-Projekte sollten stattdessen openssl_cipher_iv_length() oder Funktionen der sodium-Erweiterung (z. B. sodium_crypto_secretbox()) genutzt werden, die aktiv gepflegt und sicherheitstechnisch empfohlen sind.