我希望设计一种对列表中的项进行混洗的排序过程/算法,但要根据输入的散列唯一地做到这一点;因此,当对相同的输入--本质上是密码短语--进行散列或处理时,会重新生成完全相同的混洗。这将需要具有唯一地混洗26^4项的能力(应用程序将两个列表配对,每个列表的长度为26^4项,但它只需要混洗其中的一个)。
这能成为一件事吗?
发布于 2018-04-20 03:15:43
您可以将输入的散列用作随机数生成器的种子,然后使用该生成器执行混洗。如果两个输入是相同的(具有相同的散列),则RNG以相同的方式进行种子,从而导致相同的混洗。
发布于 2018-04-20 03:18:29
如果您有26^4个项目,那么大约有10^240000个可能的排列,需要至少1百万个字符(大约)的密码短语才能保证排列的唯一性。所以不,不是真的。
但!如果您只是想根据密码短语进行不可预测的置换,只需对其进行哈希处理,将结果用作PRNG的种子,然后使用PRNG对项目进行标准的(Fisher-Yates)混洗。结果将是独特的,尽管不是很强的加密。
https://stackoverflow.com/questions/49928575
复制相似问题