2017 © Pedro Peláez
 

library security

Security package

image

inspirecz/security

Security package

  • Thursday, June 29, 2017
  • by InspireCZ
  • Repository
  • 1 Watchers
  • 0 Stars
  • 3,512 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 5 Versions
  • 15 % Grown

The README.md

InspireCZ/Security

Latest Version on Packagist ![Software License][ico-license] Build Status ![Coverage Status][ico-scrutinizer] Quality Score ![Total Downloads][ico-downloads], (*1)

Balíček pro práci se šifrováním a hesly., (*2)

Požadavky

InspireCZ/Security vyžaduje PHP 8.0 nebo vyšší., (*3)

Instalace

Nejlepší způsob jak InspireCZ/Security nainstalovat je pomocí Composeru, (*4)

``` bash $ composer require inspirecz/security, (*5)


## 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ů). ``` php $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):, (*6)

config.neon, (*7)

``` neon parameters: crypt: symetrickey: 'edb433bdd7c13851c7c68cb31a5acf33', (*8)

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


*TestService.php* ``` 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ý., (*10)

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

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

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

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

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., (*15)

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

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

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

// výstup: Try it again, (*18)


### Generování náhodného tokenu ``` php $generator = new \Inspire\Security\Password\RandomTokenGenerator(); echo $generator->generate(); // výstup: edb433bdd7c13851c7c68cb31a5acf33

Testy

bash $ vendor/bin/phpunit test, (*19)

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., (*20)

The Versions

29/06 2017

dev-master

9999999-dev https://github.com/InspireCZ/Security

Security package

  Sources   Download

GPL-3.0 BSD-3-Clause GPL-2.0

The Requires

 

The Development Requires

security inspirecz

29/06 2017

dev-stable

dev-stable https://github.com/InspireCZ/Security

Security package

  Sources   Download

GPL-3.0 BSD-3-Clause GPL-2.0

The Requires

 

The Development Requires

security inspirecz

29/06 2017

v1.0.1

1.0.1.0 https://github.com/InspireCZ/Security

Security package

  Sources   Download

GPL-3.0 BSD-3-Clause GPL-2.0

The Requires

 

The Development Requires

security inspirecz

12/03 2017

dev-default

9999999-dev https://github.com/InspireCZ/Security

Security package

  Sources   Download

GPL-3.0 BSD-3-Clause GPL-2.0

The Requires

 

The Development Requires

security inspirecz

12/03 2017

v1.0.0

1.0.0.0 https://github.com/InspireCZ/Security

Security package

  Sources   Download

GPL-3.0 BSD-3-Clause GPL-2.0

The Requires

 

The Development Requires

security inspirecz