Python Plugin Documentation
Python’s cryptography library offers comprehensive cryptographic functions. If it’s not already installed, you can install i using pip: pip install cryptography.
This example combines the randomly generated IV with the encrypted data, separated by a colon (`:`), and then encodes the entire payload in base64. This format ensures that the encrypted data and the IV are securely transmitted together.
from cryptography.hazmat.primitives import serialization, padding
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
import os, base64, json
def encrypt_data(data, plugin_key_hex):
plugin_key = bytes.fromhex(plugin_key_hex) # Convert hex key to bytes
iv = os.urandom(16) # Generate a random 16-byte IV
# Pad data to block size and convert to bytes
padder = padding.PKCS7(algorithms.AES.block_size).padder()
padded_data = padder.update(json.dumps(data).encode()) + padder.finalize()
# Encrypt the data
cipher = Cipher(algorithms.AES(plugin_key), modes.CBC(iv), backend=default_backend())
encryptor = cipher.encryptor()
encrypted_data = encryptor.update(padded_data) + encryptor.finalize()
# Combine IV and encrypted data, then encode in base64
encrypted_blob = base64.b64encode(iv + encrypted_data)
return encrypted_blob.decode()
# Example usage
plugin_key = ‘your_plugin_key_here’ # Replace with your actual plugin key
report_ghosting_data = {
“email”: “[email protected]”,
“reason”: “No response after several follow-ups”,
“date”: “2024-03-26”
}
encrypted_data = encrypt_data(report_ghosting_data, plugin_key)
print(‘Encrypted Data:’, encrypted_data)