Heim > Backend-Entwicklung > PHP-Tutorial > Wie füge ich PKCS7-Auffüllungen zu AES-verschlüsselten Zeichenfolgen hinzu und entferne sie?

Wie füge ich PKCS7-Auffüllungen zu AES-verschlüsselten Zeichenfolgen hinzu und entferne sie?

Barbara Streisand
Freigeben: 2024-12-11 16:56:10
Original
747 Leute haben es durchsucht

How to Add and Remove PKCS7 Padding from AES-Encrypted Strings?

Wie füge ich PKCS7-Padding zu einer AES-verschlüsselten Zeichenfolge hinzu bzw. entferne sie?

In der Kryptografie wird PKCS7-Padding verwendet, um die Vertraulichkeit sensibler Daten durch das Hinzufügen zusätzlicher Bytes zu gewährleisten Ende einer Nachricht. Durch diese Auffüllung können die verschlüsselten Daten ein Vielfaches der Blockgröße des verwendeten Verschlüsselungsalgorithmus betragen, typischerweise AES (Advanced Encryption Standard) im 128-Bit-Modus.

Grundlegendes zum PKCS7-Auffüllen

Das PKCS7-Auffüllen folgt einem bestimmten Algorithmus:

  1. Berechnen Sie die Anzahl der Bytes, die erforderlich sind, um die Nachricht auf ein Vielfaches aufzufüllen der Blockgröße.
  2. Fügen Sie diese Anzahl von Bytes an das Ende der Nachricht hinzu.
  3. Setzen Sie jedes Füllbyte auf den Wert der Anzahl der Füllbytes.

PKCS7-Auffüllung hinzufügen

Um PKCS7-Auffüllung hinzuzufügen, können Sie diese befolgen Schritte:

import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad

# Sample data to encrypt
data = "Hello, World!"

# Define the AES key (128 bits = 16 bytes)
key = 'YOUR_AES_KEY_16_BYTES_LONG'

# Initialization vector (IV) for ECB mode is not used and ignored
iv = '0' * 16

# Create an AES cipher in ECB mode
cipher = AES.new(key, AES.MODE_ECB)

# Pad the data before encryption
padded_data = pad(data, 16)  # 16 is the block size for AES-128

# Encrypt the padded data
ciphertext = cipher.encrypt(padded_data)

# Encode the ciphertext in base64 for transmission
ciphertext_base64 = base64.b64encode(ciphertext).decode('utf-8')

# Print the encrypted and base64-encoded ciphertext
print(ciphertext_base64)
Nach dem Login kopieren

PKCS7-Polsterung entfernen

Um die PKCS7-Polsterung zu entfernen, können Sie die folgenden Schritte ausführen:

import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad

# Sample base64-encoded ciphertext to decrypt
ciphertext_base64 = 'ENCRYPTED_AND_BASE64_ENCODED_DATA'

# Decode the base64 ciphertext
ciphertext = base64.b64decode(ciphertext_base64)

# Define the AES key (128 bits = 16 bytes)
key = 'YOUR_AES_KEY_16_BYTES_LONG'

# Initialization vector (IV) for ECB mode is not used and ignored
iv = '0' * 16

# Create an AES cipher in ECB mode
cipher = AES.new(key, AES.MODE_ECB)

# Decrypt the ciphertext
decrypted = cipher.decrypt(ciphertext)

# Remove the padding from the decrypted data
data = unpad(decrypted, 16)

# Print the decrypted and unpadded data
print(data.decode('utf-8'))
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie füge ich PKCS7-Auffüllungen zu AES-verschlüsselten Zeichenfolgen hinzu und entferne sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage