Как аутентифицироваться с зашифрованной электронной почтой в качестве имени пользователя?

В моем веб-приложении Django я хотел бы, чтобы пользователь аутентифицировал себя с помощью зашифрованного адреса электронной почты, который будет просто именем пользователя. В связи с существующими в моей стране правилами GDPR, я должен шифровать адреса электронной почты, и, делая это с помощью криптографии Python и функций Fernet, каждая строка после шифрования отличается от другой, даже если две строки зашифрованы одним и тем же ключом. Возможно ли в такой ситуации аутентифицировать пользователя без ошибок? Если это возможно, то где можно почитать об этом подробнее?

Вот хороший урок по использованию криптографии на python https://www.geeksforgeeks.org/how-to-encrypt-and-decrypt-strings-in-python/

В соответствии с GDPR, пользователь может ввести свой email, но вы должны зашифровать его в магазине, а затем расшифровать, когда вы захотите его использовать. Убедитесь, что ваш секрет скрыт. Если кто-то получит доступ к вашей базе данных и вашему секрету, шифрование будет так же хорошо, как если бы его не было.

Вы не должны сравнивать зашифрованные строки, вы должны расшифровать письмо и сравнить его с письмом, которое введено в данный момент. Сравнение хэшей должно выполняться только с помощью хэширования, а не шифрования. Если вы не хотите иметь доступ к электронной почте пользователя, вам следует использовать хэширование вместо шифрования.

Хорошо почитать здесь How do I encrypt and decrypt a string in python?, чтобы узнать, как сделать то, что вам нужно, плюс вы довольно хорошо описали решение, поэтому взгляните на следующие пакеты от сообщества Django, которые достигают того, что вы ищете:

https://github.com/orcasgit/django-fernet-fields/

https://github.com/orcasgit/django-fernet-fields/blob/master/fernet_fields/fields.py#L117 Он включает в себя зашифрованное поле электронной почты

https://github.com/patowc/django-encrypted-field

Вернуться на верх