Использование SHA-512 - хорошая идея для получения криптографически сильного хэша, но ваш выбор соли не добавляет дополнительной безопасности.В частности, соль полезна только в том случае, если ее значение является случайным и не может быть предсказано заранее.Это не позволяет злоумышленнику предварительно рассчитать таблицу известных хэшей, с помощью которой можно попытаться атаковать вашу базу данных.Если соль известна, то злоумышленник может просто предварительно вычислить таблицу значений хеш-функции, в которой соль жестко закодирована.
В вашем случае соль, по существу, известна злоумышленнику, поскольку она детерминировано вычисляется из входной строки.Если бы я хотел атаковать вашу систему, я мог бы перебрать кучу известных строк, (детерминистически) вычислить соль для каждой строки, а затем вычислить хэш SHA-512 соленой строки и сохранить ее в таблице.Исходя из этого, я мог бы инвертировать хеш-код в пароль для любой строки, которую мне довелось вычислить заранее.
Если вы хотите улучшить систему безопасности, вместо этого рассмотрите возможность использования соли, которая генерируется случайным образом и затем сохраняется вместе с полученным хешем.Таким образом, независимо от того, какие таблицы я предварительно вычисляю, есть небольшая вероятность, что таблица будет полезна, потому что я не обязательно вычислял таблицы для всех возможных солей.По сути, каждый случайный бит в вашей соли удваивает объем работы, которую я должен сделать, поэтому, если вы выберете хорошую случайную соль (скажем, 128 битов), то не существует никакого способа, которым я мог бы выполнить атаку до вычисления.Мне пришлось бы атаковать SHA-512, хеш, предположительно криптографически безопасный (имя означает «алгоритм безопасного хэширования»), чтобы взломать вашу систему.