jf/crypto

Cifrado y descifrado de textos y archivos

1.0.0 2024-03-02 18:18 UTC

This package is auto-updated.

Last update: 2024-05-31 00:18:10 UTC


README

Cifrado y descifrado de textos y archivos.

Instalación

Composer

Este proyecto usa como gestor de dependencias Composer el cual puede ser instalado siguiendo las instrucciones especificadas en la documentación oficial del proyecto.

Para instalar el paquete jf/crypto usando este manejador de paquetes se debe ejecutar:

composer require jf/crypto

Control de versiones

Este proyecto puede ser instalado usando git. Primero se debe clonar el proyecto y luego instalar las dependencias:

git clone git@gitlab.com:joaquinfq/jfCrypto.git
cd jfCrypto
composer install

Archivos disponibles

Clases

NombreDescripción
jf\Crypto\ACipherClase para cifrar de manera simple archivos usados como base de datos o configuración.
jf\Crypto\AssertExcepción lanzada por el paquete.
jf\Crypto\AsymmetricKeysGestiona las necesidades el cifrado y descifrado usando claves asimétricas.
jf\Crypto\CipherClase para cifrar de manera simple textos o datos.
jf\Crypto\FileCipherClase para cifrar de manera simple archivos usados como base de datos o configuración.

Interfaces

NombreDescripción
jf\Crypto\IAsymmetricKeysInterfaz para las clases que gestionan claves criptográficas asimétricas.
jf\Crypto\ICipherInterfaz para cifrar/descifrar textos.
jf\Crypto\ICryptoInterfaz para las clases que gestionan claves criptográficas.
jf\Crypto\ICryptoIdInterfaz para las clases que requieren cifrar su identificador.
jf\Crypto\IFileCipherInterfaz para cifrar/descifrar archivos.

Traits

NombreDescripción
jf\Crypto\TIdTrait para aplicar a los objetos que necesitan cifrar su identificador numérico.

Ejemplos

jf\Crypto\AssymetricKeys

// Si no tenemos las claves las creamos
// AsymmetricKeys::createKeys(__DIR__);

// Al crear la clase especificamos el directorio donde se encuentran las claves.
$ecdsa     = new AsymmetricKeys(__DIR__);
$content   = file_get_contents(__FILE__);
$encrypted = $ecdsa->encrypt($content);
assert($ecdsa->decrypt($encrypted) === $content);

jf\Crypto\FileCipher

$content    = file_get_contents(__FILE__);
$key        = md5($content); // Asignamos la clave que queremos usar.
$cipher     = new Cipher($key);
$filecipher = new FileCipher($key);
$encrypted  = $cipher->encrypt($content);
$encfile    = __FILE__ . '.encrypted';

assert($cipher->decrypt($encrypted) === $content);
assert($filecipher->save($encfile, $content) === strlen($encrypted));
assert($filecipher->load($encfile) === $content);

unlink($encfile);