
源码系统概览
文章正文
Hashids 是一套短 ID 生成器的 PHP 多框架集成层组件源码,把数据库自增主键等数字 ID 编码为短小、唯一、不可猜测的字符串,适合 URL、分享码与订单号场景。
项目作者为开发者 erik,MIT 协议开源,底层基于 hashids 官方算法库第五版,README 最后更新 2026 年,API 对齐主流 Laravel 集成包可平滑替换。
源码简介
同一套 API 覆盖 Laravel、webman、ThinkPHP 与 Hyperf,各框架遵循原生惯例注册开箱即用。
多连接支持不同盐值与长度的组合,按连接名切换,同一项目可并存多种编码策略。
无框架项目可直接实例化管理器使用,编码解码双向对应,支持批量数字编解码。
Laravel 5.5 以上自动发现平滑替换旧包,Hyperf 走配置提供者注册,兼容成本极低。
和直接暴露自增 ID 对比,区别在于 Hashids 编码后的 ID 不可枚举猜测,又不影响数据库自增性能。
| 对比维度 | Hashids | Vinkla Hashids |
|---|---|---|
| 框架覆盖 | 四大框架统一 API | 单一框架绑定 |
| 多连接 | 不同盐值长度并存 | 单一配置 |
| 迁移成本 | API 对齐可平滑替换 | 需改调用方 |
| 实现依据 | 官方算法库第五版 | 各自实现 |
不想暴露数据库自增 ID 又不想上加密的团队,用这个组件一行编码即可保护主键。
适用场景
- 订单系统生成不可猜测的对外单号。
- 分享链接做短 ID 防遍历抓取。
- 会员系统做邀请码与卡券码生成。
- 学习多框架包开发与适配层设计。
技术栈与运行环境
组件底层依赖 hashids 官方算法库第五版,框架集成需项目已安装对应框架核心包。
适配 Laravel 5.5 以上、webman、ThinkPHP 与 Hyperf,各框架配置发布与服务注册遵循原生惯例。
安装执行 composer require 后按框架配置盐值与长度,无框架场景直接实例化管理器调用。
功能亮点
- 数字 ID 编码为短小唯一不可猜测字符串。
- 四大框架统一 API 平滑替换旧实现。
- 多连接不同盐值长度组合并存切换。
- 无框架场景直接实例化即用。
- 批量编解码支持。
技术架构与部署指南
安装与部署提示
执行 composer require erikwang2013/hashids 完成安装,Laravel 自动发现其余框架按文档注册。
在配置中设置盐值与编码长度,业务代码调用 encode 与 decode 方法完成双向转换。
包内代码对应 v2026.9.0 口径版本,更新日志以仓库提交记录为准,最后更新 2026 年 8 月。
截图与演示说明

项目 README 以用法示例与打赏码为主,未附界面截图,本页配图采用 GitHub 仓库社交分享卡片。
组件为纯代码库形态,接入后调用编码方法即可验证输出效果。
引入组件后调用编码方法即可把数字主键转换为短字符串,解码可还原原值。
常见问题
问. Hashids 是什么组件?
短 ID 生成器的 PHP 多框架集成层源码,把数字主键编码为短小不可猜测字符串,四大框架统一 API,MIT 协议开源。
问. 怎么安装使用?
执行 composer require 安装并配置盐值长度,Laravel 自动发现,调用 encode 方法把数字 ID 编码为字符串。
问. 编码是加密吗?
不是,编码不可逆猜测但无加密强度,盐值只增加猜测难度,不可用于令牌或密码等安全场景。
问. 上线后能改盐值吗?
不能,修改盐值或长度会使已编码的 ID 全部失效,务必在上线前确定配置。
安全风险提示
对 28 个源码文件做了扫描,代码明文无加密混淆,未发现 webshell 与凭据硬编码。
纯算法封装零网络请求零外联,无高风险函数调用。
README 明确说明编码非加密的安全边界,使用时请遵循该定位。
下载说明
本页提供 Hashids 短 ID 组件完整源码打包下载,含四大框架适配代码。
压缩包解压后按 README 配置即可使用,盐值设置请在上产前确定。
GitHub项目开源地址 https://github.com/erikwang2013/hashids