我正在开发一个项目,我需要使用一些哈希函数来创建哈希字符串。此哈希字符串应该是唯一的,包含6到13个字符(固定长度)。
我使用数据库来存储数据,因此对于每条记录,我都有一个唯一的ID。我想使用这个唯一的ID来创建一个哈希字符串(以实现结果哈希字符串的唯一性)。
我需要这个哈希字符串只包含有效字符(0-9 a-z A-Z)。
我应该使用哪种哈希函数来实现这一目标?我怎样才能生成这样的哈希字符串?
稍后添加:我想生成此字符串并将其传递给用户,以便稍后可以回来编辑该条目。任何其他想法都可以接受。
答案 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)
它真的需要是加密校验和吗?或者更简单的校验和是否合适?数据库提供的主键本身不适合吗?
但是,如果您针对某些特定应用(例如filesystem hashing或finding nearby objects使用某些指标)执行此操作,那么您将不得不指定更多问题。