加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 17:24:26 所属栏目:PHP教程 来源:网络整理
导读:我想用 MySQL表格字段(question_id)中的整数和Auto Incr引入短的uniq字符串ID. 示例当用户指向www.something.com/SjBWY – php将获取id = 23511的记录; 我想隐藏有关问题数量的信息,并介绍使用某种翻译算法将问题代码1到1映射到question_id. 我不想将questio
我想用 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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读