LaravelHashid集成了[Base62]、[Base64]、[Hashids]、[Optimus]等高性能编码算法,并提供统一、优雅、易用的调用接口将“敏感数据”混淆(编码)为可逆的、非顺序的、URL安全的标识符(ID)。应用场景示例不想对外暴露常规数据索引,如用户ID、媒体资源ID、商品ID、订单号、注册码、优惠码等,防止爬虫入侵。重构现有发码(ID生成)机制:使用数据库自??带的索引主键,对外混淆。进一步混淆加密字符串并生成URL安全字符串。简单、统一的调用方式使用不同的编码算法,同一算法的不同编码参数,或者自定义算法。项目主页项目主页及详细文档:https://github.com/ElfSundae/...新包求星求反馈安装$composerrequireelfsundae/laravel-hashid对于低于5.5的Lumen或Laravel版本,需要手动注册服务提供者:ElfSundae\Laravel\Hashid\HashidServiceProvider::class发布配置文件:#对于Laravel应用程序:$phpartisanvendor:publish--tag=hashid#对于Lumen应用程序:$cpvendor/elfsundae/laravel-hashid/config/哈希。phpconfig/hashid.php配置Hashid的配置文件和Laravel框架的很多管理(manager)服务的配置非常相似,比如数据库、缓存、队列等,所以不需要额外花时间学习如何配置.让我们看一个例子:'default'=>'id','connections'=>['basic'=>['driver'=>'base64',],'hashids'=>['driver'=>'hashids','salt'=>'sweetgirl',],'id'=>['driver'=>'hashids_integer','salt'=>'MyApplication','min_length'=>6,'alphabet'=>'1234567890abcdef',],'base62'=>['driver'=>'base62','characters'=>'f9FkqDbzmn0QRru7PBVeGl5pU28LgIvYwSydK41sCO3htaicjZoWAJNxH6EMTX',]],使用全局或使用hashid函数获取drivonn实例。使用hashid_encode()全局函数进行编码。使用hashid_decode()全局函数进行解码。示例:hashid_encode(123456);//"xkNDJ"hashid_decode('xkNDJ');//123456hashid_encode(123456,'擎天柱');//1101845824hashid_decode(1101845824,'擎天柱');//123656hashid3_encode(12'base);//"W7E"hashid_encode('123456','base62');//"FMJUCzH4"hashid_decode('W7E','base62_integer');//123456内置驱动程序[Base62]:base62,base62_integer[Base64]:base64,base64_integer[Hashids]:hashids,hashids_hex,hashids_integer,hashids_string[Hex]:hex,hex_integer[Optimus]:optimus控制台命令hashid:alphabet:generaterandomstring0-9a-zA-Zhashid:optimus:generate[Optimus]用于编码的参数自定义驱动需要使用自己的编码和解码算法。你只需要创建一个类来实现ElfSundae\Laravel\Hashid\DriverInterface接口。这个接口只有两个方法:编码和解码。初始化方法可选地接受名为$config的配置参数,并且还支持类型提示依赖注入。例如:encrypter=$encrypter;$this->serialize=$config['serialize']??错误的;}publicfunctionencode($data){return$this->encrypter->encrypt($data,$this->serialize);}publicfunctiondecode($data){return$this->encrypter->decrypt($data,$this->serialize);}}要使用这个自定义驱动,在配置文件中指定即可:'connections'=>['custom'=>['driver'=>App\Hashid\CustomDriver::class,'serialize'=>false,],//...]调用示例:hashid_encode(123456,'custom');如果您想为自定义驱动程序使用短名称,只需注册一个容器绑定:$this->app->bind('hashid.driver.custom',CustomDriver::class);更多使用方法请参考项目主页:https://github.com/ElfSundae/...
