如何从用户输入生成唯一的字符串?
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)
例如,用户可以提交 $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)