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