PHPackages                             calject/encryption - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Security](/categories/security)
4. /
5. calject/encryption

ActiveLibrary[Security](/categories/security)

calject/encryption
==================

encryption

v0.2.1(6y ago)072MITPHPPHP ^7.0CI failing

Since Aug 7Pushed 6y ago1 watchersCompare

[ Source](https://github.com/calject/encryption)[ Packagist](https://packagist.org/packages/calject/encryption)[ RSS](/packages/calject-encryption/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependencies (1)Versions (4)Used By (0)

encryption
==========

[](#encryption)

**Table of Contents**

- [一、介绍](#%E4%B8%80%E4%BB%8B%E7%BB%8D-top)
- [二、安装教程](#%E4%BA%8C%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B-top)
- [三、使用](#%E4%B8%89%E4%BD%BF%E7%94%A8-top)
    - [AES](#31-AES)
    - [RSA](#32-RSA)
- [四、拓展](#expand)

### 一、介绍 [top](#encryption)

[](#一介绍-top)

一个php基于openssl的加解密简单封装实现，仅做常用的 AES/RSA 加解密封装，支持PHP版本&gt;=7.0且安装了openssl拓展的程序

若程序版本&lt;7.0或者有其它算法需求或需要源码实现的，请使用php的加密库 [phpseclib/phpseclib](https://github.com/phpseclib/phpseclib)

[示例代码](https://github.com/calject/encryption/tree/master/test)

### 二、安装教程 [top](#encryption)

[](#二安装教程-top)

执行`composer require "calject/encryption"`

### 三、使用 [top](#encryption)

[](#三使用-top)

- `Calject\Encryption\Encryption`

    - `method`
        - `rsaFactory`
        - `aesFactory`
        - `aesHmacFatory`
    - `get`
        - `Calject\Encryption\Encryption::rsaFactory()`
        - `Calject\Encryption\Encryption::aesFactory()`
        - `Calject\Encryption\Encryption::aesHmacFatory()`
- `Calject\Encryption\Factories\RsaFactory`

    - `method`
        - `createPkcs1`
        - `createPkcs8`
        - `createPkcs12`
        - `createX509`
- `Calject\Encryption\Factories\AesFactory`

    - `method`
        - `createAes`
        - `createAesCbc128`
        - `createAesCbc256`
        - `createAesEcb128`
        - `createAesEcb256`
- `Calject\Encryption\Factories\AesHmacFactory`

    - `method`
        - `createAes`
        - `createAesCbc128`
        - `createAesCbc256`
- examples

```
# create aes encryption
$aes = AesFactory::createAesEcb128($key);
$aes = Encryption::$aes::createAes($key, Openssl::CODING_BASE64, 'AES-256-ECB');
$aes = Encryption::aesFactory()::createAes($key, Openssl::CODING_BASE64, 'AES-256-ECB');

# create rsa encryption
// 设置编码格式，默认为 Openssl::CODING_BASE64 base64
$rsa = RsaFactory::createPkcs8($pubFile, $priFile, Openssl::CODING_HEX_BIN);
$rsa = Encryption::$rsa::createPkcs8($pubFile, $priFile, Openssl::CODING_HEX_BIN);
$rsa = Encryption::rsaFactory()::createPkcs8($pubFile, $priFile, Openssl::CODING_HEX_BIN);
```

- [代码示例及说明](https://github.com/calject/encryption/blob/master/test/test_rsa_mix.php)

```
/*
|--------------------------------------------------------------------------
| RSA 混合密钥创建示例
|--------------------------------------------------------------------------
|
*/

/* ======== 私钥(p12)、公钥(x509-pem) ======== */
// 添加 Openssl::FILE_READ_PUB_X509_PEM 配置参数
$rsa = Encryption::rsaFactory()::createPkcs12($pubFile, $priFile, $password, Openssl::ENCRYPT_CODING_NO | Openssl::FILE_READ_PUB_X509_PEM);

/* ======== 私钥(p12)、公钥(x509-cer) ======== */
// 添加 Openssl::FILE_READ_PUB_X509_CER 配置参数
$rsa = Encryption::rsaFactory()::createPkcs12($pubFile, $priFile, $password, Openssl::ENCRYPT_CODING_NO | Openssl::FILE_READ_PUB_X509_CER);

/* ======== 私钥(p12)、公钥(pkcs8-pem) ======== */
$rsa = Encryption::rsaFactory()::createPkcs12($pubFile, $priFile, $password, Openssl::ENCRYPT_CODING_NO);

$rsa->setOpts(Openssl::FILE_READ_PUB_PKCS1 | Openssl::CODING_NO | Openssl::ENCRYPT_CODING_NO);

/*
|--------------------------------------------------------------------------
| RSA 可选参数列表 参考CalJect\Encryption\Constants\Openssl 接口类定义
|--------------------------------------------------------------------------
| 1.编码格式
|   1. 常用编码格式
|   CODING_NO         : 不进行任何编码，可以在方法外部自行进行编码操作
|   CODING_BASE64     : Base64编码
|   CODING_HEX_BIN    : HexBin 编码
|   此类参数可通过 `$rsa->setCodingMode(Openssl::CODING_HEX_BIN)` 设置编码格式为HexBin (默认为Base64编码)
|
| 1.2 自定义编码格式
|   可通过实现 CalJect\Encryption\Contracts\ICoding 接口自定义编码操作, 然后通过`$rsa->setCoding(XXX)`方法设置编码
|
| 2.padding配置(适用于AES加密)
|   同样可以通过`$rsa->setPaddingMode()` 设置，或者实现`CalJect\Encryption\Contracts\IPadding`接口并通过`$rsa->setPadding()`设置
|   可选: NO_DIGEST、SHA1_DIGEST
|
| 3.加密模式(默认为公钥加密-私钥解密)
|   可通过设置$rsa->setMode($rsa::MODEL_OPPOSITE / Pkcs12::MODEL_OPPOSITE / Pkcs8::MODEL_OPPOSITE ...);
|   设置加密模式为反向模式(即使用私钥加密-公钥解密模式 不推荐使用该模式,仅保留该功能)
|
| 4.加签/验签数据编码
| 通过`$rsa->setSignCoding(ICoding)`方法设置，或者自行在外部设置
|
| 5. pkcs12加密编码设置(通过$rsa->setOpts()设置) [一般不作修改，默认使用HexBin对加密内容进行分段编码]
|   Openssl::ENCRYPT_CODING_NO      : 不编码 (一般与其它语言交互是可能需要设置该参数，具体看加密模式及双方编码约定)
|   Openssl::ENCRYPT_CODING_HEX_BIN : 使用HexBin 编码
|
| 6. 通用参数设置`$rsa->setOpts(int xxx)`
| 可通过该参数设置rsa的私钥读取、编码等参数配置
| 例: 需要配置Pkcs12的公钥读取为x509格式、编码格式为HexBin
|     `$rsa->setOpts(Openssl::FILE_READ_PUB_X509_CER | Openssl::CODING_HEX_BIN)`
| 例: 设置Pkcs12公钥读取为Pkcs1、不进行编码、字段解析不编码
|     `$rsa->setOpts(Openssl::FILE_READ_PUB_PKCS1 | Openssl::CODING_NO | Openssl::ENCRYPT_CODING_NO)`
*/

/*
|--------------------------------------------------------------------------
| AES 参考各示例文件,使用与RSA基本一致
|--------------------------------------------------------------------------
|
*/
```

#### 3.1 AES

[](#31-aes)

- 使用示例

1. [test\_aes](https://github.com/calject/encryption/blob/master/tests/test_aes.php)
2. [test\_aes\_ecb](https://github.com/calject/encryption/blob/master/tests/test_aes_ecb.php)
3. [test\_aes\_cbc](https://github.com/calject/encryption/blob/master/tests/test_aes_cbc.php)
4. [test\_aes\_hmac](https://github.com/calject/encryption/blob/master/tests/test_aes_hmac.php)

#### 3.2 RSA

[](#32-rsa)

- 使用示例

1. [test\_rsa\_pkcs8](https://github.com/calject/encryption/blob/master/tests/test_rsa_p8.php)
2. [test\_rsa\_pkcs12](https://github.com/calject/encryption/blob/master/tests/test_rsa_p12.php)
3. [test\_rsa\_x509](https://github.com/calject/encryption/blob/master/tests/test_rsa_x509.php)

### 四、拓展 [top](#encryption)

[](#四拓展-top)

- 查看`openssl`可用加密算法及支持的摘要算法

    - [test\_encrypt\_list](https://github.com/calject/encryption/blob/master/tests/test_encrypt_list.php)
- aes算法拓展,通过AesFactory::createAes() 输入算法参数，参考

    - [test\_aes](https://github.com/calject/encryption/blob/master/tests/test_aes.php)
- 拓展aes实现

    - 继承`Calject\Encryption\Contracts\AbsAesEncryption`抽象类并实现其方法
- 拓展rsa实现

    - 继承`Calject\Encryption\Contracts\AbsRsaEncryption`抽象类并实现其方法
- 拓展其他算法

    - 继承`Calject\Encryption\Contracts\AbsEncryption`抽象类并实现其方法

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~57 days

Total

3

Last Release

2359d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/eaa53504f6aa5ddf4f9749d54fbaae3adef90963da9241c244506f4148e044dd?d=identicon)[calject](/maintainers/calject)

---

Top Contributors

[![chanlly](https://avatars.githubusercontent.com/u/18607258?v=4)](https://github.com/chanlly "chanlly (3 commits)")

---

Tags

phpencryptionrsaaesencryptdecryptcaljectchanlly

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/calject-encryption/health.svg)

```
[![Health](https://phpackages.com/badges/calject-encryption/health.svg)](https://phpackages.com/packages/calject-encryption)
```

###  Alternatives

[nzo/url-encryptor-bundle

The NzoUrlEncryptorBundle is a Symfony Bundle used to Encrypt and Decrypt data and variables in the Web application or passed through URL

961.0M2](/packages/nzo-url-encryptor-bundle)[miladrahimi/phpcrypt

Encryption, decryption, and hashing tools for PHP projects

3171.5k2](/packages/miladrahimi-phpcrypt)[poly-crypto/poly-crypto

High-level cryptographic functions that are interoperable between NodeJS and PHP 7.1+

127.8k1](/packages/poly-crypto-poly-crypto)[hemiframe/php-aes

PHP class for encrypt and decrypt data with AES algorithm

1030.3k](/packages/hemiframe-php-aes)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
