我准备将一个项目公开放在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执行转储,那么该文件仍然可供公众访问。