PHPackages                             jiaxincui/hashid - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. jiaxincui/hashid

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

jiaxincui/hashid
================

Laravel ID Encrypt Helper

1.2.1(8y ago)2412.3k↑173.3%4[1 issues](https://github.com/jiaxincui/hashid/issues)MITPHPPHP &gt;=5.6.0

Since Sep 19Pushed 8y agoCompare

[ Source](https://github.com/jiaxincui/hashid)[ Packagist](https://packagist.org/packages/jiaxincui/hashid)[ RSS](/packages/jiaxincui-hashid/feed)WikiDiscussions master Synced yesterday

READMEChangelog (6)Dependencies (1)Versions (8)Used By (0)

介绍
--

[](#介绍)

一个对Laravel应用模型ID进行对称加密的辅助函数。

依赖于[hashids/hashids](https://github.com/ivanakimov/hashids.php)

只适用于正整数加密。

安装
--

[](#安装)

```
$ composer require jiaxincui/hashid
```

配置
--

[](#配置)

1. 复制`config/hashid.php`文件到Laravel项目的`config`文件夹。
2. 在.env文件添加配置项`HASH_ID_ALPHABET=your-key`。

- **为了Hash成更安全的字符串，请手动重新生成`HASH_ID_ALPHABET`，为0-9a-zA-Z共62个字符随机排序，字符不可重复，长度为16-62，可使用以下方法生成**

```
echo str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
```

简单使用
----

[](#简单使用)

包含两个辅助方法`id_encode()`和`id_decode()`。 在Laravel项目的任何地方均可使用这两个函数对ID进行加密或解密。

### 例子

[](#例子)

```
echo id_encode(4568); //输出:N5lkv0

echo id_decode('N5lkvO'); //输出:4568

//不可对float类型数字加密，不可对负数加密，给定任何非正整数参数都会抛出错误，如：
echo id_encode(2.36); //非正整数,抛出错误
echo id_encode(-23); //非正整数,抛出错误

//解密时任何无效字符串参数或校验错误都会抛出错误, 如：
echo id_decode('m_Dl9'); //包含无效字符,抛出错误
echo id_decode('nlK8GhRW'); //校验错误,抛出错误
```

和[hashids/hashids](https://github.com/ivanakimov/hashids.php)不同的是`hashids`提供多个数字或包含多个数字的数组加密成一个字符串， 解密时以数组形式返回，这在实际应用中并不常见，反而给使用带来一定麻烦， 而此包对此进行了一些处理，不提供多个数字或多个数字数组的加密，解密时直接返回解密后的数字。

Laravel深度应用
-----------

[](#laravel深度应用)

### 加密

[](#加密)

有2种方法实现自动加密

- 如果模型主键为`id`

    通过Hashid提供的trait，在数据库模型中使用`use Hashid;`，对结果中的`id`字段自动加密成字符串，例如：

```
