如何在PHP中使用一些特殊规则生成哈希字符串?

时间:2010-07-05 08:41:28

标签: php hash cryptographic-hash-function

我正在开发一个项目,我需要使用一些哈希函数来创建哈希字符串。此哈希字符串应该是唯一的,包含6到13个字符(固定长度)。

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

我需要这个哈希字符串只包含有效字符(0-9 a-z A-Z)。

我应该使用哪种哈希函数来实现这一目标?我怎样才能生成这样的哈希字符串?

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

3 个答案:

答案 0 :(得分:2)

使用crypt:

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

唯一ID是一个salt,因此您可以根据ID生成不同的值。因此,如果一个用户的密码为“somevaluetohash”而另一个用户具有相同的密码,那么结尾的哈希值就不一样了。

答案 1 :(得分:0)

<?php
  $id;
  $hash_full = md5($id); //hash('sha256', $id);
  $hash_cropped = substr($hash_full, 0, 6);
?>

hash()用于其他哈希算法。

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

答案 2 :(得分:0)

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

您有很多选择,从最简单的crc32到最高级sha512

但是,如果您针对某些特定应用(例如filesystem hashingfinding nearby objects使用某些指标)执行此操作,那么您将不得不指定更多问题。