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