Start · Sprachen · PHP · Referenz · mcrypt_get_block_size

mcrypt_get_block_size

Funktion

Liefert die Blockgröße (in Bytes) der angegebenen Verschlüsselungs-Chiffre.

seit PHP 4.0.0 Kategorie: crypto

Signatur

mcrypt_get_block_size(int|string $cipher, string $mode = ''): int|false

Beschreibung

mcrypt_get_block_size() gibt die Blockgröße einer bestimmten Verschlüsselungs-Chiffre in Bytes zurück. Die Blockgröße ist ein wesentlicher Parameter für blockbasierte Verschlüsselungsverfahren wie AES, DES oder Blowfish und bestimmt, wie groß die Datenblöcke sind, die in einem Schritt ver- oder entschlüsselt werden.

Die Funktion kann auf zwei Arten aufgerufen werden: Entweder mit einer Chiffre-Konstante (z. B. MCRYPT_RIJNDAEL_128) als erstem Parameter, oder mit dem Namen der Chiffre als String (z. B. 'rijndael-128') und dem gewünschten Modus als zweitem Parameter. Letztere Variante spiegelt die Nutzung des mcrypt_module_open()-Workflows wider.

Die Kenntnis der Blockgröße ist wichtig, um Daten vor der Verschlüsselung korrekt aufzufüllen (Padding) bzw. nach der Entschlüsselung wieder zu entfernen. Ohne korrektes Padding können Daten nicht korrekt ver- oder entschlüsselt werden.

Achtung: Die gesamte mcrypt-Erweiterung gilt seit PHP 7.1.0 als veraltet (deprecated) und wurde in PHP 7.2.0 vollständig aus dem Core entfernt. Für neue Projekte sollte stattdessen openssl_*-Funktionen oder die sodium-Erweiterung verwendet werden.

Parameter

Name Typ Default Beschreibung
$cipher Pflicht int|string Entweder eine MCRYPT-Konstante wie MCRYPT_RIJNDAEL_128, MCRYPT_DES usw., oder bei Verwendung der zweiten Aufrufform der Name der Chiffre als String (z. B. 'rijndael-128').
$mode string Der Betriebsmodus als String, z. B. 'cbc', 'ecb' oder 'cfb'. Wird nur benötigt, wenn cipher als String-Name übergeben wird.

Rückgabewert

Typ
int|false
Beschreibung
Gibt die Blockgröße der Chiffre in Bytes als Integer zurück, oder false bei einem Fehler (z. B. unbekannte Chiffre).

Beispiele

Blockgröße über MCRYPT-Konstante ermitteln

<?php
// Blockgröße von AES (Rijndael-128) abfragen
$blockSize = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128);
echo 'Blockgröße von AES: ' . $blockSize . ' Bytes' . PHP_EOL;

// Blockgröße von DES abfragen
$blockSizeDes = mcrypt_get_block_size(MCRYPT_DES);
echo 'Blockgröße von DES: ' . $blockSizeDes . ' Bytes' . PHP_EOL;
Blockgröße von AES: 16 Bytes Blockgröße von DES: 8 Bytes

Blockgröße über Chiffre-Namen und Modus ermitteln

<?php
// Blockgröße von Blowfish im CBC-Modus abfragen
$blockSize = mcrypt_get_block_size('blowfish', 'cbc');
echo 'Blockgröße von Blowfish (CBC): ' . $blockSize . ' Bytes' . PHP_EOL;

// Daten entsprechend der Blockgröße auffüllen (PKCS7-Padding)
$data = 'Geheime Nachricht';
$padLength = $blockSize - (strlen($data) % $blockSize);
$paddedData = $data . str_repeat(chr($padLength), $padLength);
echo 'Länge nach Padding: ' . strlen($paddedData) . ' Bytes' . PHP_EOL;
Blockgröße von Blowfish (CBC): 8 Bytes Länge nach Padding: 24 Bytes

// Wichtig · Fallstricke

Deprecation-Hinweis: Die mcrypt-Erweiterung wurde in PHP 7.1.0 als veraltet markiert (deprecated) und in PHP 7.2.0 vollständig entfernt. Bestehender Code sollte auf openssl_*-Funktionen (z. B. openssl_encrypt(), openssl_decrypt()) oder die sodium-Erweiterung (sodium_crypto_*) migriert werden.

Die Funktion mcrypt_get_block_size() steht in zwei Modi zur Verfügung: mit einer Konstante als erstem Argument (ältere API) oder mit Chiffre-Name als String und Modus-Angabe (neuere mcrypt-API). Beide Varianten liefern denselben Wert, solange die Chiffre unterstützt wird.

Für die sichere Verschlüsselung moderner Anwendungen empfiehlt sich die Verwendung von AES-256-GCM über openssl_encrypt() oder sodium_crypto_aead_aes256gcm_encrypt(), da diese Verfahren authentifizierte Verschlüsselung bieten und gegen Manipulationen schützen.