Правильная реализация функции шифрования

Я написал простую функцию шифрования, которая использует 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 ответ
1

Вы можете добавлять аннотации в параметры функции, например password: str и так далее.

  • 2

    Они могут быть назвал что-то еще.

    – седобородый

  • 2

    @greybeard “Аннотации” подойдут, хотя это немного общее. Из вашей ссылки: “вот простая функция, аргумент и возвращаемый тип которой объявлены в аннотациях: “. Синтаксис называется аннотация, и здесь они используются как подсказки типа.

    – канцерогенат


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *