minvws/laravel-crypto

Laravel加密功能提供者

v3.1.3 2023-02-16 01:13 UTC

This package is auto-updated.

Last update: 2024-09-16 04:47:10 UTC


README

要了解更多关于项目中使用的加密信息,请参阅我们的加密文档

要求

  • PHP >= 8.0
  • Laravel >= 8.0

安装

  1. 使用composer安装此包
composer require minvws/laravel-crypto
  1. 如果您正在运行Laravel 5.5或更高版本(包将自动发现),则可以跳过此步骤。config/app.php中找到providers数组键,并注册Laravel Crypto Service Provider
'providers' => [
    ...
    MinVWS\Laravel\Providers\CryptoServiceProvider::class,
];

使用方法

本节介绍了不同加密功能的使用方法

CMS 加密

CMS 加密允许您轻松加密(并可能解密)数据。

使用方法

class UserController {
    
    protected CmsCryptoInterface $service;
    
    function index()
    {
        $cipherText = $this->service->encrypt('plaintext');
        return new JsonResponse(['data' => $cipherText]);        
    }
}

Sealbox 加密

class UserController {
    
    protected SealboxCryptoInterface $service;
    
    function index()
    {
        $cipherText = $this->service->encrypt('plaintext');
        return new JsonResponse(['data' => $cipherText]);        
    }
}

签名

class UserController {
    
    protected SignatureCryptoInterface $service;
    
    function index()
    {
        $sig = $this->service->sign('foobar', false);
        return new JsonResponse(['signature' => $sig]);        
    }
}

Laravel HTTP 中间件

步骤 1: 在app/Http/Kernel.php中添加

/*/ Package Middleware /*/
    ...
    'cms_sign' => \MinVWS\Crypto\Laravel\Http\Middleware\CmsSignature::class,

步骤 2: 在您的路由中添加您的中间件

Route::middleware('cms_sign')->post(
    '/my/route',
    [RouteController::class, 'index']
);

环境变量

# OpenSSL CMS encryption
CMS_ENCRYPTION_CERT_PATHS        A comma separated list of x509 certificate paths that are used for encrypting data 
CMS_DECRYPTION_CERT_PATH         A certificate file path that is used for decrypting data (optional)  
CMS_DECRYPTION_CERT_KEY_PATH     The key file for the cert that is used for decrypting data (optional)  

# LibSodium sealbox
CMS_SEAL_PRIVKEY            Our own private X25519 key
CMS_SEAL_RECIPIENT_PUBKEY   Public X25519 key of the recipient

# OpenSSL CMS signing
CMS_SIGN_X509_CERT          The certificate file to sign the data
CMS_SIGN_X509_KEY           The key file to sign the data
CMS_SIGN_X509_PASS          Optional passphrase for the key file
CMS_SIGN_X509_CHAIN         Optional chain of certificates to be added to the signed data

运行测试

测试将基于您的PHP版本运行。在PHP7上,openssl功能不可用,将不会进行测试。

在没有PHP8(但有docker)时运行测试

您可以使用PHP8 docker镜像在运行PHP7时测试PHP8功能

docker run -ti -w /app -v $PWD:/app php:8-cli php /app/vendor/bin/phpunit

在PHP8上使用代码覆盖率

docker run -ti -w /app -v $PWD:/app php:8-cli phpdbg -qrr /app/vendor/bin/phpunit --coverage-html=./html