Heim >Backend-Entwicklung >PHP-Tutorial >Wie funktioniert PKCS7-Padding mit der AES-Verschlüsselung und wie kann ich es in PHP hinzufügen und entfernen?
PKCS7-Padding für AES-Verschlüsselung
Bei der Verwendung von AES-Verschlüsselung ist es üblich, PKCS7-Padding zu verwenden, um sicherzustellen, dass die Länge der verschlüsselten Daten mit dem Block übereinstimmt Größe des zugrunde liegenden Verschlüsselungsalgorithmus. Das Hinzufügen und Entfernen dieser Auffüllung kann jedoch möglicherweise nicht von der Mcrypt-Erweiterung verarbeitet werden, sodass es sich um eine manuelle Aufgabe handelt.
PKCS7-Auffüllung erklärt
Wie in RFC 5652 definiert, PKCS #7-Padding funktioniert durch das Anhängen von Bytes mit einem Wert, der der Padding-Länge entspricht. Wenn wir beispielsweise drei Bytes auffüllen müssen, hätten die angehängten Bytes alle den Wert 0x03.
Hinzufügen von PKCS7-Auffüllungen
Um die Auffüllung manuell hinzuzufügen, berechnen Sie die Differenz zwischen der aktuellen Datenlänge und der gewünschten Blockgröße. Dieser Wert stellt die Anzahl der erforderlichen Füllbytes dar. Hängen Sie dann so viele Bytes mit der Auffülllänge als Wert an das Ende der Daten an.
Beispiel-PHP-Funktion zum Hinzufügen von Auffüllungen
function addPKCS7Padding($data) { $block_size = 16; $pad_length = $block_size - (strlen($data) % $block_size); $padding = str_repeat(chr($pad_length), $pad_length); return $data . $padding; }
Entfernen PKCS7-Auffüllung
Um die Auffüllung zu entfernen, lesen Sie das letzte Byte der entschlüsselten Daten. Dieser Wert stellt die Länge der Polsterung dar. Entfernen Sie dann einfach diese Anzahl von Bytes vom Ende der Daten.
Beispiel-PHP-Funktion zum Entfernen von Auffüllungen
function removePKCS7Padding($data) { $pad_length = ord($data[strlen($data) - 1]); return substr($data, 0, -1 * $pad_length); }
Implementierungshinweise
Das obige ist der detaillierte Inhalt vonWie funktioniert PKCS7-Padding mit der AES-Verschlüsselung und wie kann ich es in PHP hinzufügen und entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!