您现在的位置是:网站首页 > 心得笔记
安装laravel扩展包----Hash ID 生成器
简介Hash ID 生成器,方便把数字的 ID 隐藏(基于 Hashids 库) 它的原理就是从数字经过一个加盐(salted)算法产生一个哈希(hash)字符串。这样算法就是通过混淆使结果具有不可预测性,而唯一性依然由数字本身来达成,从而得到(类似 youtube 里的)足够短,不可预测且唯一的 ID。
安装
1.cmd切换到laravel项目目录下,命令行模式运行
composer require vinkla/hashids
安装完成后,会在vendor看到有hashids文件夹
2.修改 app/config/app.php 添加 ServiceProvider :
Vinkla\Hashids\HashidsServiceProvider::class,
3.修改 app/config/app.php 添加 alias:
'Hashids' => Vinkla\Hashids\Facades\Hashids::clas,
4.以config下生成hashids.php配置文件
php artisan vendor:publish
5.修改hashids.php中的connections的盐值和加密输出长度
其中盐值可以是任意长度任意字符的字符串,加密和盐值有直接的关系,盐值是解密的钥匙。我直接取项目的密钥作为其盐值,以让项目统一,且不同项目的加密结果不一样。
'connections' => [ 'main' => [ 'salt' => env('APP_KEY'), 'length' => '16', ], 'alternative' => [ 'salt' => env('APP_KEY'), 'length' => '6', ], 'recommend' => [ 'salt' => env('APP_KEY'), 'length' => '6', ], ],
Hashids的加密解密使用方式
加密的使用方式 Hashids::encode(123);//返回经过加密后的字符串a9M4pPZqO0rJ6QWK 解密的使用方式(注意返回值是数组) Hashids::decode('a9M4pPZqO0rJ6QWK');//返回经过解密后的数组[123] 同时加密多个参数 Hashids::encode(1,2,3);//M0BKxg8cYSNrVAjp 解密多个参数的加密字符串 Hashids::decode('M0BKxg8cYSNrVAjp')//返回经过解密后的数组[1,2,3]
切换不同的盐值和加密长度
我们可能需要对多个不同类型的id进行加密,盐值和返回长度也各有不同。所以config的hashids中的多个数组可以派上用场了。其中main数组是作为默认连接,可以自行添加其他的加密数组。
Hashids::connection('recommend')->encode(1); Hashids::connection('recommend')->decode("jflkasdjfkasdjfl");