从32个字符的字符串中获取16个字符的字符串

时间:2013-06-07 12:47:22

标签: hash md5

如何从长度为32个字符的字符串中获取长度为16个字符的字符串。 这个32个字符的字符串是md5哈希。那么如何让获得的16个字符串也相当独特呢? 我需要每个月生成大约1,00,000个这样的字符串。我需要确保所有生成的字符串在所有运行中都是唯一的。

2 个答案:

答案 0 :(得分:0)

最好的方法可能是采取其他角色。

例如,

ipm98u2nm0c87ne0p87n87bnvjckp97w ->
im82mc7ep78bvcp7

这可能是让它尽可能保持唯一的最好方法,但是如Gray's comment中所指出的,删除字符的问题在于,当你删除一个字符时,你实际上是划分了36个唯一的字符串(或者有许多可能的字符)。

答案 1 :(得分:0)

我将解释我的原始评论。如果您的唯一密钥不依赖于某些数据,请使用UUID或我说:

$string = str_shuffle('abcdefjhijklmnopqrstuvwxyz1234567890');
$uniqe = substr($string, 0, 16);

var_dump($uniqe);

如果您的唯一密钥应该依赖于任何数据,并且应该恰好1个字符长,请使用产生64值的其他哈希算法。有关散列算法的列表,请查看wikipedia