PHP / 字段加密 + Rust

让密文落库让查询照常

Eloquent cast、SQL 解密片段与密钥轮换,原生 PHP 也能用。

Locky · 小锁灵,encryptable 的项目宠物

密文落库,查询仍然可用

encryptable 在属性写入前加密、读取时解密,Eloquent cast 与手工 API 共用同一条 OpenSSL 路径。

需要唯一性或存在性校验时,DB 路径输出 MySQL 与 PostgreSQL 可用的 SQL 解密片段;previous_keys 支持在线轮换密钥。

  • Eloquent 属性加密
  • MySQL / PostgreSQL
  • 密钥环与在线轮换
4框架桥接
19测试类
v2.0.13当前版本
Locky · 小锁灵 的 微笑 表情

Locky

友好的挂锁吉祥物:琥珀色钥匙是当前主密钥,同环上的两把灰钥匙是 previous_keys,用来继续解密旧数据。

主钥换了,旧钥还在环上。

从模型属性到数据库表达式

框架只负责接线,加密核心没有框架依赖。

Eloquent 转换

在 $casts 里写 Encryptable::class,读写自动加解密。

PHP 侧加解密

Encryption::php() 供 CLI、队列与非模型代码直接调用。

SQL 解密片段

生成 MySQL 与 PostgreSQL 的 SQL 解密片段,用于密文比较。

加密校验规则

UniqueEncrypted 与 ExistsEncrypted 直接比较确定性密文。

密钥轮换

主钥与 previous_keys 组成解密环,可渐进重加密旧数据。

四框架桥接

Laravel、Webman、Hyperf、ThinkPHP 各自接入,也能裸 PHP 运行。

同一能力,Rust 版本

同一套字段加密语义,在 Rust 里同样可用。

Rust v1.3.0 Rust 1.88 / crate

encryptable-rust

Rust 版可检索字段加密

AES-256-GCM 加密落库,AES-256-ECB 支持按原值查询,HKDF 分离子密钥,并提供 MySQL / PostgreSQL SQL 片段与八种框架集成。

  • 可检索的字段加密
  • 两条路径密钥分离
  • 八种 Rust 框架集成
查看 Rust 仓库

功能是这样长出来的

每次发布解决一个具体问题,而不是堆砌功能。

v2.0.13

解密兼容与发布自动化

接受 base64: 前缀的 previous_keys,校验规则改读已解析的加密器,发布说明自动生成。

v2.0.12

社交预览图

为 GitHub 仓库补上 1280x640 的社交预览图,README 同步引用。

v2.0.11

表情形态接入 Mascot

Mascot 新增 expressions() 与 expression(),12 种表情随包发布。

v2.0.10

透明背景与 Markdown

宠物 SVG 去掉底色,README 统一改用 Markdown 表格。

版本日志

最近的发布记录,完整列表在 GitHub Releases。

最新 v2.0.13 全部版本
v2.0.132026-10-19

修复 previous_keys 的 base64 前缀与校验规则取值,发布说明自动化。

v2.0.122026-10-18

新增 GitHub 社交预览图。

v2.0.112026-10-18

Mascot 暴露 12 种表情形态的读取接口。

v2.0.102026-10-18

宠物主图透明化,README 改用 Markdown。

v2.0.92026-10-18

表情 SVG 背景透明化。

v2.0.82026-10-18

为视觉资产保留商业权利。

安装与使用

先安装,再跑一个最小示例。

PHP >= 8.0完整 README
安装
composer require erikwang2013/encryptable
最小示例
use Erikwang2013\Encryptable\Encryption;

$plain = 'value to protect';
$cipher = Encryption::php()->encrypt($plain);

$restored = Encryption::php()->decrypt($cipher);

小锁灵的十二种表情

鼠标停一停,它会换一种心情。

搜索本站

输入关键词,例如“上传”“迁移”“JWT”。