可预测ID';s转换为PHP中不可预测的短字符串


Predictable ID's to non-predictable short strings in PHP

可能重复:
Short';加密/散列';在PHP 中

对,

我需要做一个身份证;100000001、100000002、100000003使用PHP(如PDKJ23HB43 )转换为不太可预测的字符串

  • 它需要是字母数字
  • (如果可能)长度需要为5-15个字符
  • 它需要是可逆的
  • 它必须是独一无二的
  • 它不需要安全[我不会用它来"加密"任何东西]
  • (如果可能)它不需要数据库来记录映射
  • 我想做的事情有可能吗

我认为这将类似于URL如何变成TinyURL,但这只是一个模糊的猜测。

我尝试了一些不同的选项,如base64,但输出太长(我知道原因,我只是找不到更好的解决方案,因为这是我第一次需要做这样的事情。

谢谢你们的帮助,任何人都非常感激。如果我问得很直接,很抱歉,但这是我实现目标的唯一途径。

由于您需要这是可逆的,我建议使用mcrypt。不过,这将带来间接费用。

如果你不想要可预测的ID,那么为什么不改变你的系统,使用uniqid()生成随机ID呢?

您可以使用这个:

echo base_convert(time(), 10, 34).base_convert(rand(), 10, 34);

如果你想要可预测的(非安全的)id,只需在某个地方存储一个计数并使用

echo base_convert(mycount, 10, 34);