Я готовлюсь опубликовать проект на github. В моем проекте для аутентификации при входе в систему я беру строку и строго набираю ее как Password
:
// Stripped down here on SO for brevity
public class Password
{
private const string salt = "sealab2021";
public Password(string password)
{
this.saltedPasswordHash = new MD5Hash(password + this.salt).ToString();
}
public string SaltedHash { get; private set; }
}
Очевидно, что если соль общедоступна, соль бесполезна.
Что другие люди делают для подсчета паролей в проектах с открытым исходным кодом и при этом сохраняют надёжную скрытую фразу?
Должна ли соль существовать где-то в файловой системе и быть загружена при запуске приложения? Кажется разумным решением, но если я собираюсь использовать github для управления исходным кодом, а не просто делать дампы в github при выпуске новых версий, этот файл все еще будет доступен для общественности.