-1

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

4

2 回答 2

0

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

例如,

ipm98u2nm0c87ne0p87n87bnvjckp97w ->
im82mc7ep78bvcp7

这可能是您尽可能保持其唯一性的最佳方式,但是正如Gray 的评论中所指出的,删除字符的问题是,当您删除一个字符时,您实际上将唯一字符串的数量除以 36(或不管有多少可能的字符)。

于 2013-06-07T12:51:04.867 回答
0

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

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

var_dump($uniqe);

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

于 2013-06-07T13:03:50.353 回答