Я никак не пойму тему с солью хэшей. Если соль будет динамическая то допустим посолил хэш, добавил в БД. Потом например юзер хочет авторизоваться: вводит пароль и надо опять взять хэш с солью, но соль рандомная и в этот раз уже будет другая, следовательно и хэш выйдет другой - значит не совпадет с хэшем из БД... А если соль будет статичная то ее могут украсть и взломать все. Ну или где ее хранить тогда чтоб не украли?
В первом приближении солят для того, чтобы нельзя было заранее рассчитать большой набор хеш-значений для списка наиболее популярных паролей, а потом массово сверить его с базой. Поэтому соль можно хранить рядом с хеш-значением, важно чтобы она была различной для каждого хеша.
А как быть в случае с мобильным приложением? Я делаю менеджер паролей и мне нужен хэш от мастер-пароля (которым шифруется база) для того чтобы длина мастер-пароля была всегда 16 символов (для AES шифрования). Имеет ли тут смысл солить и где тогда хранить соль?