Hinzufügen und Entfernen von PKCS7-Padding für die AES-Verschlüsselung
Beim Verschlüsseln von Daten mit 128-Bit-AES-Verschlüsselung im ECB-Modus (Electronic Codebook) ist dies der Fall Es ist erforderlich, PKCS7-Padding zum Klartext und Chiffretext hinzuzufügen und zu entfernen. bzw.
PKCS7-Padding ist eine in RFC 5652 definierte Methode, die sicherstellt, dass die Datenlänge ein Vielfaches der Blockgröße ist. Dabei werden so viele Bytes angehängt, wie nötig sind, um den letzten Block zu füllen, wobei jedes Byte auf die Anzahl der hinzugefügten Füllbytes eingestellt wird.
Hinzufügen von PKCS7-Padding
Zum Hinzufügen PKCS7-Auffüllung auf Klartext vor der Verschlüsselung mit AES:
PKCS7-Auffüllung entfernen
So entfernen Sie PKCS7-Auffüllung aus Chiffretext nach der Entschlüsselung mit AES:
PHP-Funktionen für Führen Sie diese Vorgänge aus:
function encrypt($plaintext, $key) { $block = mcrypt_get_block_size('aes', 'ecb'); $pad = $block - (strlen($plaintext) % $block); $plaintext .= str_repeat(chr($pad), $pad); return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plaintext, MCRYPT_MODE_ECB); } function decrypt($ciphertext, $key) { $ciphertext = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $ciphertext, MCRYPT_MODE_ECB); $block = mcrypt_get_block_size('aes', 'ecb'); $pad = ord($ciphertext[strlen($ciphertext) - 1]); return substr($ciphertext, 0, -1 * $pad); }
Beachten Sie, dass zur Sicherheit empfohlen wird, CBC oder andere Verkettungsmodi anstelle von ECB zu verwenden Verschlüsselung.
Das obige ist der detaillierte Inhalt vonWie füge ich PKCS7-Auffüllung für die AES-Verschlüsselung im ECB-Modus hinzu und entferne sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!