如何从用户输入生成唯一的字符串?

How to generate unique string from users input?

例如,用户可以提交 $a$b$c。我需要根据这些输入创建一个唯一的字符串。

如果我使用 $uniq = $a$b$c,输入 $a=AB, $b=CD, $c=EF$a=A, $b=BCD, $c=EF 都会生成 $uniq=ABCDEF

如果我使用$uniq = $a|$b|$c,那么$a=AB, $B=CD, $c=EF|$a=AB|CD, $b=EF, $c=""都会生成$uniq=AB|CD|EF|

我该怎么做?

正确且安全的解决方案是为 $a$b$c 生成单独的散列值,然后通过连接或生成另一个散列将这些散列组合在一起。

这是一个算法:

$a_h = hash($a)
$b_h = hash($b)
$c_h = hash($c)
$uniq = hash($a_h$b_h$c_h)

根据您的要求,可能还需要添加 "salt" 以使其更加安全:https://en.wikipedia.org/wiki/Salt_(cryptography)