Stack Overflow на русском Asked by Helen on January 3, 2021
Есть таблица с пользователями, в колонке хранится зашифрованный пароль. Я хочу, чтобы каждый пользователь имел свою соль, а не общую, для лучшей безопасности. Как это лучше реализовать? Иметь дополнительную колонку для солей, или сделать какую-нибудь функцию для генерации уникальной соли? Я не хочу использовать функцию, т.к. тут трудности что брать за параметр (имя (меняется), дату регистрации (может быть общая), id – слишком простое значение). Подскажите у кого есть опыт.
дополнительная колонка для соли.
https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html#salting
Имхо, соль не обязательно должна быть уникальной, т.е. не нужно по ней создавать уникальный констрейнт. Куда важнее ее случайность. Генерировать соль лучше всего безопасным генератором случайных чисел. Например:
static final SecureRandom PRNG = new SecureRandom();
static final int SALT_SIZE = 16; // length of your salt column
// ...
byte[] salt = new byte[SALT_SIZE];
PRNG.nextBytes(salt);
но это нужно только в том случае, если использовать классические хэш алгоритмы, если же взять к примеру BCrypt то соль будет закодирована в хэш, т.е. дополнительная колонка будет не нужна.
Answered by Ramiz on January 3, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP