salt - 如何最好地为网站生成随机盐?

标签 salt web-farm application-state

我想生成一个随机盐值并将其置于“应用程序”状态。

现在,我正在使用Web场,因此每台计算机的“应用程序”状态将有所不同。我也不想购买分布式州立农场应用程序。

那么..对此有什么解决方案?我以为我可以在代码或web.config文件中对其进行硬编码..但这意味着对eva使用相同的盐..不是很安全。

有人有什么建议吗?

记住-我追求的是唯一的 key (例如guid),该 key 在所有机器上都是相同的。也许配置文件是唯一的方法?

最佳答案

如果我理解正确,则您希望这些机器共享一个值,并且您不希望该值永远相同。理想情况下,您不希望存储它。

因此,请让“第一台”计算机在启动时生成一个随机值((使用/dev/random之类的任何熵)。如果您不需要安全值,并且在启动时没有足够的熵来创建一个随机值无论如何,请使用时间或其他任何时间),然后将其传达给所有其他人。当新计算机加入群集时,它们需要能够从群集中已存在的一台计算机中查找值。机器掉落没有任何区别。

“第一台”是哪台机器?好吧,如果您总是可以先引导一台计算机,然后给它时间来生成一个值,那么您可以使用简单的算法:

1)寻找其他机器。如果找到一个,请询问它的值。
2)如果找不到一个,请自己生成值。

如果同时启动多台计算机,则它们之间需要确定哪个是“领导者”。您可以通过自己选择一个主机来执行此操作(例如,一台计算机通过管理界面接收到特定的连接后便立即声明自己为“领导者”:启动时,每台计算机都将等待直到它获得该连接,或者从另一台计算机上听到了另一台计算机的声音。机器是领导者)。在 token 环上自动执行操作很简单:MAC地址最少的机器或任何引导者。但是没有人再使用 token 环...

在不可靠网络的相反极端情况下,我不确定它是否有可能,除非所有机器都知道总数将达到多少(在这种情况下,就像 token 环一样,只是它们彼此互相交谈直到它们已经弄清楚谁是领导者)。有了可靠的广播,这是您可以在以太网上的合理范围内假定的,我敢肯定某个地方发布了一种最佳算法,但是我忘了它是什么(如果我知道的话)。我猜想每个人都会定期播报他们认为的领导者名单(包括他们尚未看到更好的领导者时提出的主张)。听完足够长的时间(大约一个间隔)后,您将知道领导者是谁,然后就可以开始使用种子了。

如果该值是 secret 信息,则显然群集内的通信必须是安全的。您可能会免费获得它,具体取决于网络体系结构。

关于salt - 如何最好地为网站生成随机盐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/328711/

相关文章:

c# - 在没有当前 HttpContext 可用的情况下访问 HttpApplicationState

c++ - 为密码哈希函数生成 Salt 的可接受方法 - C++

security - 我可以公开哈希盐+密码吗?

security - 如何在 postgresql 中散列密码?

php - 从 MySQL 数据库中解密数据

parallel-processing - 与网格或群集相反,什么是服务器场?

caching - 服务器场中的应用程序缓存值得这么复杂吗?

asp.net - SessionID 在 Azure 中的不同实例中发生变化(可能在网络场中)

iphone - 单击谷歌地图后是否可以返回我的应用程序?

ios - 应用程序状态保存/恢复