unntech/encrypt

Commonly used encryption libraries

v1.0.6 2025-07-03 13:24 UTC

This package is auto-updated.

Last update: 2025-07-03 13:27:06 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version PHP Version Require License

常用的加密库,封装开箱即用

主要新特性

  • 采用PHP7强类型(严格模式)

Encrypt 1.0 的运行环境要求PHP7.4+,兼容PHP8

安装

composer require unntech/encrypt

更新框架使用

composer update unntech/encrypt

目录结构

encrypt/
├── src                                     #
│   ├── AES.php                             # AES(Advanced Encryption Standard,高级加密标准)
│   ├── ECDSA.php                           # ECDSA 椭圆曲线数字签名
│   ├── Encode.php                          # 编码常用函数
│   ├── encrypt.md                          # 加解密及验签文档
│   ├── Request.php                         # Api 请求类
│   ├── Response.php                        # Api 输出类
│   └── RSA.php                             # RSA 加密库
├── tests                                   # 测试样例,可删除
├── composer.json                           #
├── license.txt
└── README.md

加解密及验签文档

encrypt.md

使用示例

access_token 生成及校验

use UNNTech\Encrypt\WebToken;

// 生成 token
$token = WebToken::instance('aes key')->getToken(['sub'=>123], 600);
// 校验token及获取数据
$data = WebToken::instance()->verifyToken($token);

AES 加解密

use UNNTech\Encrypt\AES;

$aes = new AES('key');
// 加密
$ciphertext = $aes->encrypt('plaintext');
// 解密
$plaintext = $aes->decrypt($ciphertext);

ECDSA 验签及加解密

use UNNTech\Encrypt\ECDSA;

$ecdsa = new ECDSA();
//生成ECDSA公私钥
$c = $ecdsa->createKey();
var_dump($c);

$publicKey = $c['public'];
$privateKey = $c['private'];

$ecdsa = new ECDSA( $publicKey, $privateKey );
$data = '测试ECDSA数据';
//生成ECDSA签名
$sign = $ecdsa->sign( $data );
//验证ECDSA签名
$y = $ecdsa->verifySign( $data, $sign );
var_dump( $sign, $y );

$arr = ['order'=>'20200826001','money'=>200];
//生成ECDSA签名数据数组
$arr = $ecdsa->signArray($arr);
//验证ECDSA签名数组
$y = $ecdsa->verifySignArray($arr);
var_dump($arr,$y);

//ECIES加密
$x = $ecdsa->encrypt( $data );
var_dump( $x );
//ECIES解密
$y = $ecdsa->decrypt( $x['ciphertext'], $x['tempPublicKey'], $x['iv'], $x['mac'], $x['code'] );
var_dump( $y );

RSA 验签及加解密

use UNNTech\Encrypt\RSA;

//生成RSA公私钥
$rsa = new RSA();
$c = $rsa->createKey();
var_dump($c);

$publicKey = $c['public'];
$privateKey = $c['private'];

$rsa = new RSA( $publicKey, $privateKey );
$data = '测试RSA2';
//生成RSA签名
$sign = $rsa->sign( $data );
//验证RSA签名
$y = $rsa->verifySign( $data, $sign );
var_dump( $sign, $y );

$arr = ['order'=>'20200826001','money'=>200];
//生成RSA签名数据数组
$arr = $rsa->signArray($arr);
//验证RSA签名数组
$y = $rsa->verifySignArray($arr);
var_dump($arr,$y);
//RSA加密
$x = $rsa->encrypt( $data );
//RSA解密
$y = $rsa->decrypt( $x );
var_dump( $x, $y );

Request 请求数据生成及验签

use UNNTech\Encrypt\Request;

$data = [
    'order_id' => 123,
    'money'    => 1001.23,
];

$req = Request::instance(['secret'=>'secret_key', 'signType'=>'SHA256'])::headers(['app'=>'IOS', 'access_token'=>'token'])::generate($data, 'array');
var_dump($req);
$request = json_encode($req);
dv($request);

$c = Request::verifySign($req);
if($c){
    echo "Verify Sign Success. <BR>\n";
}else{
    echo "Verify Sign Fail. <BR>\n";
}

Response 数据格式化输出

use UNNTech\Encrypt\Response;

$data = ['abc'=>123];
Response::instance(['secret' => 'secret_key', 'signType'=>'SHA256'])::success($data);

// 验证请求的数据是否合法
Response::instance(['secret' => 'secret_key'])::verifySign($request)

命名规范

Encrypt 遵循PSR命名规范和PSR-4自动加载规范。

参与开发

直接提交PR或者Issue即可

版本更新记录 CHANGELOG

版权信息

Encrypt 遵循 MIT 开源协议发布,并提供免费使用。

本项目包含的第三方源码和二进制文件之版权信息另行标注。

版权所有Copyright © 2025 by Jason Lin All rights reserved。