You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
padelclub_backend/tournaments/utils/crypto.py

22 lines
842 B

from Crypto.Cipher import AES
import base64
def decrypt_aes_gcm(encrypted_base64, key_base64):
# Decode the base64 encoded data and key
encrypted_data = base64.b64decode(encrypted_base64)
key = base64.b64decode(key_base64)
# Extract the nonce, tag, and ciphertext from the combined encrypted data
nonce = encrypted_data[:12] # AES GCM nonce is 12 bytes
tag = encrypted_data[-16:] # AES GCM tag is 16 bytes
ciphertext = encrypted_data[12:-16] # Ciphertext is everything in between
# Create the cipher object and decrypt the data
cipher = AES.new(key, AES.MODE_GCM, nonce=nonce)
decrypted_data = cipher.decrypt_and_verify(ciphertext, tag)
# Convert decrypted bytes to string (assuming UTF-8 encoding)
decrypted_text = decrypted_data.decode('utf-8')
return decrypted_text