Я написал простую функцию шифрования, которая использует argon2d в качестве KDF и XChaCha20-Poly1305 в качестве AEAD. Поскольку при работе с шифрованием очень легко ошибиться, я был бы признателен, если бы кто-нибудь мог просмотреть мой скрипт и сообщить мне, есть ли в нем какие-либо уязвимости и может ли он использоваться в реальном мире для шифрования реальных данных.
import argon2
from Cryptodome.Cipher import ChaCha20_Poly1305
import secrets
def encrypt(password, data):
salt = secrets.token_bytes(32)
nonce = secrets.token_bytes(24)
key = argon2.low_level.hash_secret_raw(secret=password, salt=salt, time_cost=3, memory_cost=1000000, parallelism=4, hash_len=32, type=argon2.low_level.Type.D, version=19)
cipher = ChaCha20_Poly1305.new(key=key, nonce=nonce)
ciphertext, tag = cipher.encrypt_and_digest(data)
return salt + nonce + ciphertext + tag
1 ответ
Вы можете добавлять аннотации в параметры функции, например password: str
и так далее.
Они могут быть назвал что-то еще.
— седобородый
@greybeard «Аннотации» подойдут, хотя это немного общее. Из вашей ссылки: «вот простая функция, аргумент и возвращаемый тип которой объявлены в аннотациях: «. Синтаксис называется аннотация, и здесь они используются как подсказки типа.
— канцерогенат