微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 将整数ID转换为String的对称算法

我想用MySQL表格字段(question_id)中的整数和Auto Incr引入短的uniq字符串ID.

示例当用户指向www.something.com/SjBWY – > PHP获取id = 23511的记录;

我想隐藏有关问题数量的信息,并介绍使用某种翻译算法将问题代码1到1映射到question_id.
我不想将question_code存储在数据库中,我相信MysqL开发人员比我聪明,并且创建了可靠的机制来生成uniq数字.

天真的方法:(http://ideone.com/rK4hzx)

$num = 11231;

while($num > 0) {
    $v = ord( $num % 10);
    $v += 25;
    echo chr($v);

    $num = round($num / 10);
}
// JLKJJ

$result = array_reverse(str_split('JLKJJ'));
foreach ($result as $single) {
 echo chr(ord( $single)-25);
}
// 11231

问:你能提出更好的解决方案吗?

天真的aproche弱点:

>我希望能够使用小字母和大字母
>我希望能够尽可能长地将字符串长度限制为5.
>在生成的字符串中不应该是明显的序列. 11的值应该尽可能从12.

编辑
算法应该是对称的意思是我可以翻译Int-> String和String-> Int.
MD5和其他哈希算法只是一种方式,我无法从String-> Int转换

解决方法:

终于找到了我想要的东西.它被称为:
http://www.hashids.org/它有PHP,java,nodejs,ruby,.net等版本.

hashids was designed for use in URL shortening, tracking stuff,
validating accounts or making pages private (through abstraction).
Instead of showing items as 1, 2, or 3, you Could show them as
b9iLXiAa, EATedTBy, and Aaco9cy5. Hashes depend on your salt value.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐