2

我正在做一个项目,我需要使用一些哈希函数来制作哈希字符串。这个哈希字符串应该是唯一的,由 6 到 13 个字符组成(固定长度)。

我使用数据库来存储数据,因此对于每条记录,我都有一个唯一的 ID。我想使用这个唯一的 ID 来制作一个哈希字符串(以实现结果哈希字符串的唯一性)。

我需要这个哈希字符串只包含有效字符(0-9 az AZ)。

我应该使用哪个哈希函数来实现这个目标?如何生成这样的哈希字符串?

稍后添加:我想生成此字符串并将其传递给用户,以便他稍后可以回来编辑条目。任何其他想法都是可以接受的。

4

3 回答 3

2

使用地穴:

$hash = crypt("somevaluetohash", $uniqueid);

唯一 id 是一种盐,因此您可以根据 id 生成不同的值。因此,如果一个用户的密码是“somevaluetohash”,而另一个用户也有相同的密码,那么结束哈希就不会相同。

于 2010-07-05T08:59:22.983 回答
0
<?php
  $id;
  $hash_full = md5($id); //hash('sha256', $id);
  $hash_cropped = substr($hash_full, 0, 6);
?>

hash()用于其他散列算法。

但是你需要这个哈希做什么?对我来说,从 ID 生成哈希没有多大意义,你不能只使用 ID 代替吗?

于 2010-07-05T08:52:49.547 回答
0

它真的需要加密校验和吗?或者更简单的校验和是否合适?数据库提供的主键本身不合适吗?

你有很多选择,从最简单的crc32到最先进的sha512

But if you're doing this for some specific application (such as filesystem hashing, or finding nearby objects using some metrics), then you're going to have to specify more of your problem.

于 2010-07-05T09:09:05.037 回答