您现在的位置是:网站首页 > 心得笔记

安装laravel扩展包----Hash ID 生成器

盛悦2018-11-15293人围观
简介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");