【发布时间】:2011-02-15 15:03:02
【问题描述】:
理论上散列唯一值会产生唯一值吗?
假设我有一个包含 2 列的数据库表:id 和 code。 id 是一个自动递增的 int,而 code 是一个 varchar。如果我这样做......
$code = sha1($id);
... 然后将 $code 存储到与 $id 相同的行中。我的代码列也会是唯一的吗?
如果我追加当前时间呢?例如:
$code = sha1($id . time());
谢谢。
【问题讨论】:
-
不能肯定地说,但我不认为你的哈希可以保证是唯一的,因为 sha1 函数的输出数量有限。这表明由于存在无限数量的潜在密钥,因此某些不同的密钥在加密时必须映射到相同的值。我不知道 sha1 算法的内部结构,所以我不能告诉你 1 和你的数据库的数字列 max val hash 之间是否有任何数字到相同的值。有人可能知道这个问题的答案,但我认为使用不同的方法会更好。 $code=uniqid() ?
-
非常感谢。我不知道uniqid(),我一定会看看。
标签: php string hash random unique