Überlegungen zum Hinzufügen und Entfernen von PKCS#7-Padding in der AES-Verschlüsselung
Bei der AES-128-Verschlüsselung mit dem ECB-Modus (Electronic Codebook) PKCS#7-Auffüllung (Public Key Cryptography Standard #7) wird üblicherweise verwendet, um sicherzustellen, dass die Nachricht verschlüsselt wird entspricht der AES-Blockgröße, die 128 Bit beträgt. Beim Auffüllvorgang wird eine bestimmte Anzahl von Bytes an die Nachricht angehängt, um ihre Länge durch 128 teilbar zu machen.
Um einer Nachricht PKCS#7-Auffüllung hinzuzufügen, bestimmen Sie die Anzahl der benötigten Auffüllungsbytes. Dies wird berechnet, indem die Differenz zwischen der aktuellen Nachrichtenlänge und der Blockgröße genommen und dann 1 addiert wird. Die hinzugefügten Füllbytes bestehen aus einem wiederholten Zeichen, dessen ASCII-Wert die Anzahl der Füllbytes ist. Wenn beispielsweise vier Auffüllbytes benötigt werden, wird das Zeichen 0x04 (ASCII-Code für 4) viermal wiederholt und an das Ende der Nachricht angehängt.
Um PKCS#7-Auffüllung aus einer entschlüsselten Nachricht zu entfernen, Untersuchen Sie das letzte Byte der entschlüsselten Nachricht. Dieses Byte gibt die Anzahl der zu entfernenden Füllbytes an. Subtrahieren Sie den Wert dieses Bytes von der Länge der entschlüsselten Nachricht, um die tatsächliche Nachrichtenlänge zu ermitteln. Entfernen Sie dann die letzten paar Bytes aus der Nachricht und stellen Sie sicher, dass die Anzahl der entfernten Bytes mit dem durch das letzte Byte angegebenen Wert übereinstimmt.
Ausführlichere Implementierungsbeispiele finden Sie in den bereitgestellten vom Benutzer bereitgestellten Hinweisen in mcrypt Dokumentation, die spezifische Implementierungen von PKCS#7-Padding für verschiedene Verschlüsselungsalgorithmen, einschließlich AES, demonstriert. Es ist wichtig zu beachten, dass empfohlen wird, die Füllbytes nicht einfach zu entfernen, sondern deren Richtigkeit zu überprüfen, indem sichergestellt wird, dass sie alle denselben Wert wie das letzte Byte haben. Dies dient als grundlegende Prüfung gegen mögliche Datenkorruption oder -manipulation.
Das obige ist der detaillierte Inhalt vonWie füge ich PKCS#7-Auffüllung in der AES-Verschlüsselung hinzu und entferne sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!