承接 calject/encryption 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

calject/encryption

Composer 安装命令:

composer require calject/encryption

包简介

encryption

README 文档

README

Table of Contents

一、介绍 top

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

若程序版本<7.0或者有其它算法需求或需要源码实现的,请使用php的加密库 phpseclib/phpseclib

示例代码

二、安装教程 top

执行composer require "calject/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);
/*
|--------------------------------------------------------------------------
| 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

  • 使用示例
  1. test_aes
  2. test_aes_ecb
  3. test_aes_cbc
  4. test_aes_hmac

3.2 RSA

  • 使用示例
  1. test_rsa_pkcs8
  2. test_rsa_pkcs12
  3. test_rsa_x509

四、拓展 top

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

  • aes算法拓展,通过AesFactory::createAes() 输入算法参数,参考

  • 拓展aes实现

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

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

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

calject/encryption 适用场景与选型建议

calject/encryption 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 72 次下载、GitHub Stars 达 0, 最近一次更新时间为 2019 年 08 月 07 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「php」 「encryption」 「rsa」 「aes」 「encrypt」 「decrypt」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 calject/encryption 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 calject/encryption 我们能提供哪些服务?
定制开发 / 二次开发

基于 calject/encryption 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 72
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 6
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-08-07