ID 混淆扩展包 Laravel Hashid 新鲜出炉

2017-11-06 23:21:18 +08:00
 elfsundae

Laravel Hashid 整合了 Base62, Hashids, Optimus 等高性能编码算法,并提供了统一的、简单易用的调用接口,将「敏感数据」编码成可还原的、非连续的、URL 安全的标识符 (ID) 。

应用场景示例:

项目主页及详细文档: https://github.com/ElfSundae/laravel-hashid

新包求 Star 求反馈 😘

4302 次点击
所在节点    PHP
17 条回复
mingyun
2017-11-07 00:06:48 +08:00
想起微博图片链接也是用的 base62
elfsundae
2017-11-07 00:19:09 +08:00
@mingyun 嗯,我不用微博,没关注那个话题。如果微博的 base62 是可逆的话,他们竟然没打乱字符..
lepig
2017-11-07 08:56:34 +08:00
羡慕英文辣么好的人
ylsc633
2017-11-07 10:23:03 +08:00
先 star 为敬

我一直用的这个.. https://github.com/ivanakimov/hashids.php

不过我用的这个 hashid 只能加密数字 或者数字组成的数组..

请问您这个可以加密字符串么? 且指定加密后的长度 还有不出现字母数字以外的字符比如 逗号,&号等等
yangg
2017-11-07 10:25:46 +08:00
base62 自定义 字符的破解难度怎么样?
elfsundae
2017-11-07 10:39:47 +08:00
@lepig 😅 初中语法 + Google 翻译
elfsundae
2017-11-07 10:43:18 +08:00
@ylsc633 我整合的就是这个包,支持编解码为单个数字、数字数组、hex、字符串
https://github.com/ElfSundae/laravel-hashid#hashids
elfsundae
2017-11-07 10:44:44 +08:00
@yangg 没研究过,62 个字符 [0-9a-zA-Z] 的任意组合,你算算
ylsc633
2017-11-07 10:46:47 +08:00
@elfsundae 6666

一直需要一个 能加解密 字符串的... 之前的这个只能数字 或者 数字数组 很蛋疼...

既然你用的是他这个.. 那说明你这个必须开了 bcmath 扩展 才能用...
elfsundae
2017-11-07 10:51:10 +08:00
@yangg 如果能确定是 Base62 编码,并且知道至少一组原始值和对应的 Base62 值,理论上最多运行
3.146997326038794e+85 次测试
elfsundae
2017-11-07 10:55:22 +08:00
@ylsc633 这个不是加密算法.. 如果你是找加密,慎用..
建议安装 GMP,bcmath 太辣鸡..
你可以试试我这个包内置的 base62 和 hashids_string 看能满足你需求不。
yangg
2017-11-07 10:59:17 +08:00
@elfsundae 好的,多谢,
试了下加密 6 位数字的字符串,变成了 8,请问下没有什么其它加密方法加密后结果比较短的,比如 6 位数字加密后仍然只有 6 位,只是可以是字母
ps:我试过了 aes-128-ofb,6 位变 12 位了。。
elfsundae
2017-11-07 11:19:06 +08:00
@yangg 你用啥加密的 6 位变成了 8 位?
yangg
2017-11-07 11:25:00 +08:00
@elfsundae 这个 http://encode-base62.nichabi.com/
你的数字和字符串不一样是什么原理?
elfsundae
2017-11-07 11:26:11 +08:00
安装 `composer require elfsundae/laravel-hashid`
注册 service provider, Laravel 5.5 可跳过这步
然后命令行 php artisan tinker

>>> hashid_encode(654321, 'base62')
=> "2kDZ"
>>> hashid_encode(654321, 'base64')
=> "NjU0MzIx"
>>> hashid_encode(654321, 'hex_integer')
=> "9fbf1"
>>> hashid_encode(654321, 'hashids_integer')
=> "KQxWM"
>>> hashid_encode(654321, 'optimus')
=> 32067276
elfsundae
2017-11-07 11:26:44 +08:00
@yangg 见上
elfsundae
2017-11-07 11:31:45 +08:00
@yangg 嗯 就是这个 base62,我的有两种,针对数字的和针对任意字符串或 bytes 的。

数字 654321 => 2kDZ
字符串 '654321' => GvKOqXCb

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/404119

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX