Repository navigation
v1.2.0 — 原生 PHP(无框架)接入支持
本次变更
原生 PHP(无框架)接入 —— 之前只有一句「可在纯 PHP 项目中使用」,现在有可直接运行、可复制的接入方式:
examples/plain-php/
├── bootstrap.php # 单文件接线:读环境变量里的 32 字节主密钥、校验、缓存管理器、两个字段级加解密助手
└── demo.php # php examples/plain-php/demo.php 跑完整流程
# 密钥只生成一次,放在服务端环境变量里,不要写进代码
export ENCRYPTION_MASTER_KEY="$(php -r 'echo base64_encode(random_bytes(32)), PHP_EOL;')"// bootstrap.php —— 入口文件 require 一次
require __DIR__ . '/vendor/autoload.php';
$key = base64_decode(getenv('ENCRYPTION_MASTER_KEY'), true);
$manager = EncryptionManagerFactory::fromMasterKey($key, 'aes-256-gcm');
// 项目任意位置
$stored = base64_encode($manager->encrypt($phone)); // 存入 TEXT 字段
$phone = $manager->decrypt(base64_decode($stored)); // 读取后解密demo.php 会打印完整闭环:明文 → 落库值 → 还原 → 换用 SM4 加密(同一 Manager,业务代码不变)→ 篡改一字节被拒绝。
文档 —— 中英文 README 新增「原生 PHP(无框架)」小节,写明:工厂每进程只构建一次并复用、密钥放环境变量或密钥服务并做好备份、读取时捕获 EncryptionException 只记服务端日志、密文是二进制(TEXT 字段用 base64、BLOB 字段存原始 blob)。11 种语言的 README 同步了该小节与项目结构树。
测试 —— 新增 tests/PlainPhpExampleTest.php 6 个用例(含用 exec 跑通 demo 脚本)。这轮测试当场抓到一个真问题:bootstrap.php 里 EncryptionException 的命名空间写错,非法 base64 时不会抛异常而是 fatal。
安装
composer require erikwang2013/encryption:^1.2测试
vendor/bin/phpunit —— 234 用例 / 4490 断言全绿(10 项因缺少 ext-gmp / ext-sodium 跳过)。含 Mascot、设计图与 12 种语言文档在内的 1.x 全部功能保持不变,向后兼容。