Eloquent 转换
在 $casts 里写 Encryptable::class,读写自动加解密。
encryptable 在属性写入前加密、读取时解密,Eloquent cast 与手工 API 共用同一条 OpenSSL 路径。
需要唯一性或存在性校验时,DB 路径输出 MySQL 与 PostgreSQL 可用的 SQL 解密片段;previous_keys 支持在线轮换密钥。
友好的挂锁吉祥物:琥珀色钥匙是当前主密钥,同环上的两把灰钥匙是 previous_keys,用来继续解密旧数据。
主钥换了,旧钥还在环上。框架只负责接线,加密核心没有框架依赖。
在 $casts 里写 Encryptable::class,读写自动加解密。
Encryption::php() 供 CLI、队列与非模型代码直接调用。
生成 MySQL 与 PostgreSQL 的 SQL 解密片段,用于密文比较。
UniqueEncrypted 与 ExistsEncrypted 直接比较确定性密文。
主钥与 previous_keys 组成解密环,可渐进重加密旧数据。
Laravel、Webman、Hyperf、ThinkPHP 各自接入,也能裸 PHP 运行。
同一套字段加密语义,在 Rust 里同样可用。
Rust 版可检索字段加密
AES-256-GCM 加密落库,AES-256-ECB 支持按原值查询,HKDF 分离子密钥,并提供 MySQL / PostgreSQL SQL 片段与八种框架集成。
每次发布解决一个具体问题,而不是堆砌功能。
接受 base64: 前缀的 previous_keys,校验规则改读已解析的加密器,发布说明自动生成。
为 GitHub 仓库补上 1280x640 的社交预览图,README 同步引用。
Mascot 新增 expressions() 与 expression(),12 种表情随包发布。
宠物 SVG 去掉底色,README 统一改用 Markdown 表格。
点击图片放大查看。
先安装,再跑一个最小示例。
composer require erikwang2013/encryptableuse Erikwang2013\Encryptable\Encryption;
$plain = 'value to protect';
$cipher = Encryption::php()->encrypt($plain);
$restored = Encryption::php()->decrypt($cipher);cargo add encryptable-rustuse encryptable::config::ArrayConfig;
use encryptable::AeadEncrypter;
let app = AeadEncrypter::new(&ArrayConfig::new("0123456789abcdef0123456789abcdef"))?;
let c = app.encrypt("13800138000")?;
let s = app.decrypt_text(&c)?;鼠标停一停,它会换一种心情。