首頁 > 後端開發 > php教程 > 如何在 AES 加密字串中新增和刪除 PKCS7 填充?

如何在 AES 加密字串中新增和刪除 PKCS7 填充?

Barbara Streisand
發布: 2024-12-11 16:56:10
原創
746 人瀏覽過

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

如何從 AES 加密字串新增/刪除 PKCS7 填充?

在密碼學中,PKCS7 填充用於透過向字串添加額外位元組來確保敏感資料的機密性。訊息結束。此填充允許加密資料是所使用的加密演算法的區塊大小的倍數,通常是 128 位元模式下的 AES(高級加密標準)。

了解 PKCS7 填充

PKCS7 填充遵循特定演算法:

  1. 計算填充訊息所需的位元組數為區塊大小的倍數。
  2. 將該位元組數附加到訊息末尾。
  3. 將每個填充位元組設定為填充位元組數的值。

新增PKCS7 填充

要新增PKCS7 填充,您可以按照以下操作步驟:

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)
登入後複製

刪除PKCS7 填充

刪除PKCS7 填充
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'))
登入後複製
要刪除PKCS7填充,您可以按照以下步驟操作:

以上是如何在 AES 加密字串中新增和刪除 PKCS7 填充?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板