Это , а не , дубликат Как обрабатывать электронные письма как имена пользователей в GDPR? , потому что мой вопрос связан с производительностью.
У меня есть приложение, которое яхочу обеспечить соблюдение GDPR.
Моя стратегия хранения личной информации заключается в том, чтобы зашифровать ее, но мне трудно понять, как обращаться с именами пользователей.
Я искал другие вопросы, например этот , но я не могу найти ни одной с той же проблемой, что и у меня.
Мой вопрос связан с тем, какЯ должен сохранить и проверить имя пользователя в базе данных.
Подход, о котором я думал, состоит в том, чтобы иметь три столбца:
- username_encrypted (ключ шифрования будет вне базы данных, и база данных будетнет доступа к нему)
- соль
- username_hash: хэш (имя пользователя + соль)
Когда я хочу получить имя пользователя в виде простого текста, я получаюusername_encrypted и я расшифровываю его.
Когда я хочу подтвердить имя пользователя, для каждого пользователя в базе данных я должен Вариант 1 :
- Вычислить хэш с помощьюсоль пользователя (соль различна для каждого пользователя) (хеш (имя пользователя + соль))
- Сравните результат предыдущего пункта со столбцом username_hash
Итак, мой вопрос: Есть ли другой способ достичьта же цель без вычисления хеша всех пользователей?Для небольшой базы данных это не может быть проблемой.Но для большой базы данных это может иметь большое влияние.
Если это актуально, я использую базу данных PostgreSQL.
Проверьте имя пользователя Опция 2 (см. Nosajimikiответ / комментарий ниже):
- Иметь глобальную соль для всех пользователей, а столбец username_hash вычисляется с глобальной солью
- Вычислять хеш (hash (username + global_salt))
- Сравните результат предыдущей строки со столбцом username_hash