Skip to content

Commit 3010bfb

Browse files
committed
Merge branch 'main' of https://github.com/flet-dev/flet
2 parents 47ef6c9 + feeb353 commit 3010bfb

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

sdk/python/packages/flet/src/flet/security.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from cryptography.fernet import Fernet
77
from cryptography.hazmat.primitives import hashes
88
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
9+
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
910
except ImportError:
1011
raise Exception('Install "cryptography" Python package to use Flet security utils.')
1112

@@ -35,3 +36,21 @@ def decrypt(encrypted_data: str, secret_key: str) -> str:
3536
key = __generate_fernet_key_kdf(secret_key, salt)
3637
f = Fernet(key)
3738
return f.decrypt(encrypted_data_bytes[16:]).decode("utf-8")
39+
40+
def encrypt_aes_gcm_256(plain_text:str,secret_key:str) -> str:
41+
nonce = os.urandom(32)
42+
salt = os.urandom(16)
43+
key = __generate_fernet_key_kdf(secret_key,salt)
44+
key = hashlib.sha256(key).hexdigest()
45+
ag = AESGCM(key[:32].encode())
46+
return base64.urlsafe_b64encode(salt + nonce + ag.encrypt(nonce,plain_text.encode("utf-8"),None)).decode("utf-8")
47+
48+
def decrypt_aes_gcm_256(encrypted_data:str,secret_key:str) -> str:
49+
ciphertext_data_in_bytes = base64.urlsafe_b64decode(encrypted_data)
50+
salt = ciphertext_data_in_bytes[:16]
51+
key = __generate_fernet_key_kdf(secret_key,salt)
52+
key = hashlib.sha256(key).hexdigest()
53+
ag = AESGCM(key[:32].encode())
54+
return ag.decrypt(ciphertext_data_in_bytes[16:48],ciphertext_data_in_bytes[48:],None).decode("utf-8")
55+
56+

0 commit comments

Comments
 (0)