AsyncArgon2
Асинхронная обёртка для хэширования паролей с Argon2.
Особенности
- Не блокирует event loop — хэширование выполняется в отдельном потоке
- Простой API — всего два метода:
hashиverify - Гибкая настройка — все параметры Argon2 доступны
- Type hints — полная поддержка типов
- 100% тестов — покрытие кода тестами
Быстрый старт
import asyncio
from async_argon2 import AsyncArgon2
hasher = AsyncArgon2()
async def main():
hashed = await hasher.hash("password123")
print(hashed)
is_valid = await hasher.verify("password123", hashed)
print(is_valid) # True
asyncio.run(main())
Зачем это нужно?
Синхронный Argon2 блокирует event loop при хэшировании:
from argon2 import PasswordHasher
hasher = PasswordHasher()
hashed = hasher.hash("password") # ❌ Блокирует event loop
AsyncArgon2 решает эту проблему:
from async_argon2 import AsyncArgon2
hasher = AsyncArgon2()
hashed = await hasher.hash("password") # ✅ Event loop свободен