Алгоритм увеличения пароля

Пользователь вводит пароль: например "123" - нужно увеличить размер пароля до 16 символов. При этом чтобы каждый раз вводя исходный пароль - увеличенный генерировался одинаковый. Тоесть рандом не подоходит.


Ответы (3 шт):

Автор решения: openman2077 error
  1. Пользователь вводит pass = 123
  2. Генерируем мд5 на основе изначального пароля
  3. Отсекаем от мд5 генерации определённое кол-во символов, чтобы 123+кусок_отсечённого_мд5_кода = 16 символов
  4. ...
  5. Профит :)
→ Ссылка
Автор решения: Oleg Aleksandrov

Самый простой вариант

DigestUtils.md5Hex("123").substring(0, 16)
→ Ссылка
Автор решения: Barmaley Red Star

В криптографии такое "увеличение" длины пароля называется соль (salt)

По сути это более-менее случайная строка (возможно с участием самого пароля)

По сути его можно хранить в преференсах приложения ибо это не бог весь какой секрет, обладание атакующим солью пароля практически не добавляет бенефитов, поскольку весь смысл соли в противодействии радужным таблицам

С другой стороны ТС говорит об увеличении длины пароля, которая не хранится/нельзя хранить открыто - такая штука называется перец (pepper). В вычислении перца из пароля не вижу особого смысла, поскольку - хэш пароля который принято хранить в БД и так вычисляется из пароля, так что в вычислении перца из пароля нет ни логики, ни дополнительной безопасности.

Исходя из этого, вижу 2 варианта перчения:

  1. Вычисление перца как хэш из логина (или другой информации о юзере)
  2. Рандоманя генерация перца и его хранение в шифрованном виде (в качестве ключа можно использовать, например уникальный идентификатор устройства )
→ Ссылка