【问题标题】:PHP - How to generate a different hash for the same string?PHP - 如何为相同的字符串生成不同的哈希?
【发布时间】:2016-02-17 12:12:11
【问题描述】:

我需要输入一个数字,例如“1234”

并输出例如“FDRG-DRGB-RDSD”,如果我再次输入“1234”,我需要生成的输出不同,例如“GGDF-FRRF-DSED”,这两个哈希字符串需要解码:

"FDRG-DRGB-RDSD" -> "1234"

"GGDF-FRRF-DSED" -> "1234"

这可以开箱即用吗?有人可以提供一些关于如何使用 PHP 实现这一点的线索吗?

【问题讨论】:

  • 你的问题没有多大意义。哈希的要点是(a)对于相同的输入,您总是得到相同的结果,并且(b)您无法对其进行解码。你到底想做什么?哈希似乎不是正确的解决方案。
  • @Quentin 不要忘记这就是为什么你要给它们加盐,这样它们不会总是给出相同的哈希输出,因为这是一个安全漏洞
  • 寻找Hash Map 可能吗?
  • 一般可以使用base64_encode/decode进行编码和解码。但它总是返回相同的字符串。

标签: php hash decode encode


【解决方案1】:

散列是一种方法,您无法解码散列值。 "1234" -> "FDRG-DRGB-RDSD" 在所有尝试中都将保持不变。

您可以尝试使用种子的加密方法,并在加密和解密期间使用不同的种子来获取原始字符串。如下所示:

encrypt -> "1234", "seed1" => FDRG-DRGB-RDSD
encrypt -> "1234", "seed2" => GGDF-FRRF-DSED

decrypt -> GGDF-FRRF-DSED, "seed2" -> 1234
decrypt -> FDRG-DRGB-RDSD, "seed1" -> 1234

您可以根据自己的要求选择最佳的加密机制。

【讨论】:

  • 感谢您的回复。我想我将使用 uuid 创建一个哈希表并将它们与序列号相关联。对于每个序列号,我将拥有 1000 多个 uuid。
猜你喜欢
  • 1970-01-01
  • 2021-05-09
  • 2021-09-21
  • 2015-05-22
  • 1970-01-01
  • 2016-08-17
  • 2015-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多