承接 inspirecz/security 相关项目开发

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

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

inspirecz/security

Composer 安装命令:

composer require inspirecz/security

包简介

Security package

README 文档

README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

Balíček pro práci se šifrováním a hesly.

Požadavky

InspireCZ/Security vyžaduje PHP 8.0 nebo vyšší.

Instalace

Nejlepší způsob jak InspireCZ/Security nainstalovat je pomocí Composeru

$ composer require inspirecz/security

Použití

Symetrické šifrování

Pomocí klíče zašifruje, resp. rozšifruje, požadovaná data. Pro šifrování se používá šifra AES-256-CTR (klíč musí mít 32 znaků).

$hash = 'edb433bdd7c13851c7c68cb31a5acf33';
$symetric = new \Inspire\Security\Crypt\OpenSSLSymetricEncoderDecoder($hash);

$plaintext = 'Hello world!';
$ciphertext = $symetric->encode($plaintext);
echo $symetric->decode($ciphertext); // vystup: Hello world!

Pro pohodlné použití v projektu je možné zaregistrovat symetrické šifrování jako službu (např. inject pomocí konstruktoru):

config.neon

parameters:
    crypt:
        symetrickey: 'edb433bdd7c13851c7c68cb31a5acf33' 

service:
    - TestService
    cryptService: \Inspire\Security\Crypt\OpenSSLSymetricEncoderDecoder(%crypt.symetricKey%)

TestService.php

class TestService
{

    /** @var \Inspire\Security\Crypt\OpenSSLSymetricEncoderDecoder */
    private $cryptService;

    /**
     * @param \Inspire\Security\Crypt\OpenSSLSymetricEncoderDecoder $cryptService
     */
    public function __construct(\Inspire\Security\Crypt\OpenSSLSymetricEncoderDecoder $cryptService)
    {
        $this->cryptService = $cryptService;
    }

    /**
     * @param string $text
     *
     * @return string
     */
    public function useCrypt(string $text): string
    {
        return $this->cryptService->encode($text);
    }

}

Šifrování pomocí veřejného/privátního klíče

Balíček obsahuje dvě třídy pro zašifrování, resp. rozšifrování, pomocí veřejného nebo privátního klíče. Základní vlastnost je, že data zašifrovaná veřejným klíčem lze rozšifrovat pouze pomcí privátního klíče a naopak zpráva zašifrovaná priváním klíčem lzde rozšifrovat pouze veřejným klíčem. Privátní klíč může používat heslo, pokud je s ním vygenerovaný.

Omezení: Maximální délka data je závislá od použitého klíče. Pro RSA 256 bitů je omezení 245 znaků

$publicCrypt = \Inspire\Security\Crypt\OpenSSLPublicKeyCrypt::fromFile('public_key.pem');
$privateCrypt = \Inspire\Security\Crypt\OpenSSLPrivateKeyCrypt::fromFile('private_key.pem', 'passwordForKey');

$plaintext = 'Secret message for private key';
$ciphertext = $publicCrypt->encrypt($plaintext);
echo $privateCrypt->decrypt($ciphertext); // vystup: Secret message for private key

$plaintext = 'Secret message for public key';
$ciphertext = $privateCrypt->encrypt($plaintext);
echo $publicCrypt->decrypt($ciphertext); // vystup: Secret message for public key

Vytvořit KeyCrypt objekt můžeme standardně pomocí new a jako parameter konstruktoru předat přímo obsah klíče, nebo můžeme použít pomocnou statickou metodu fromFile. Ta očekává jako parametr cestu k souboru s klíčem a vrací novou instanci crypt objektu.

Generování hash z hesla a jeho ověření

$generator = new \Inspire\Security\Password\BCryptPasswordHashGenerator();
$hash = $generator->generate('my-brutal-password');

if ($generator->verify('i-dont-know-my-password', $hash)) {
    echo 'OK';
} else {
    echo 'Try it again';
}

// výstup: Try it again

Generování náhodného tokenu

$generator = new \Inspire\Security\Password\RandomTokenGenerator();
echo $generator->generate(); // výstup: edb433bdd7c13851c7c68cb31a5acf33

Testy

$ vendor/bin/phpunit test

Bezpečnost

Pokud objevíte jakýkoli bezpečnostní problém, kontaktujte nás prosím na e-mail support@inspire.cz místo využití issue.

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2017-03-13

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固