PHPackages                             onamanzi/mdcrypt - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Security](/categories/security)
4. /
5. onamanzi/mdcrypt

ActiveLibrary[Security](/categories/security)

onamanzi/mdcrypt
================

Administrar encriptación de proyectos

1.0.0(2y ago)0149MITPHP

Since Dec 12Pushed 2y ago1 watchersCompare

[ Source](https://github.com/onamanzi/mdcrypt)[ Packagist](https://packagist.org/packages/onamanzi/mdcrypt)[ RSS](/packages/onamanzi-mdcrypt/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (1)Versions (2)Used By (0)

MDCRYPT
=======

[](#mdcrypt)

Requisitos
==========

[](#requisitos)

- PHP &gt;= 7.4
- Laravel &gt;= 8

Instalación
===========

[](#instalación)

Vía composer

```
composer require onamanzi/mdcrypt
```

Para publicar la configuración

```
php artisan vendor:publish --provider="Onamanzi\Mdcrypt\MdcryptServiceProvider" --tag=mdcrypt-config
```

Configuración
=============

[](#configuración)

Una vez publicado el archivo de configuración, se deben registrar los vectores de inicialización (iv) y las contraseñas (pass) de los proyectos dentro de la llave `keys`

```
'keys' => [
	'pass' => [
		'mi_proyecto' => env('MI_PROYECTO_PASS')
	],
	'iv' => [
		'mi_proyecto' => env('MI_PROYECTO_IV')
	]
]

```

La longitud de `iv` debe de ser de 16 caracteres.

El método de encriptación es por defecto `AES-128-CBC` pero puede ser modificado a través de la variable de entorno `CRYPT_METHOD` en el archivo .env

```
CRYPT_METHOD="AES-256-CTR"

```

Uso
===

[](#uso)

Para encriptar o desencriptar es necesario crear una nueva instancia de Mdcrypt y pasarle el nombre del proyecto.

```
use Onamanzi\Mdcrypt\Mdcrypt;

$crypt = new Mdcrypt('mi_proyecto');

```

Encriptar
---------

[](#encriptar)

El método `encrypt` encriptara la cadena recibida.

```
$stringToEncrypt = "Soy una cadena de texto";

$crypt->encrypt($stringToEncrypt);

```

Para obtener la cadena encriptada hay que usar el método `getResult`.

```
$string = $crypt->getResult(); //"g9CllWBEg7Bw-cTom6GvbHF0DKXSVD3u3zeuCU0jGpI,"

```

Desencriptar
------------

[](#desencriptar)

La desencriptación de se realiza con el método `decrypt`.

```
$crypt = new Mdcrypt('mi_proyecto');

$crypt->decrypt("g9CllWBEg7Bw-cTom6GvbHF0DKXSVD3u3zeuCU0jGpI,");

```

De igual manera que en la [encriptacion](#encriptar) el resultado se obtendria con `getResult`.

```
$crypt->getResult(); //"Soy una cadena de texto"

```

Manejo de Arrays
----------------

[](#manejo-de-arrays)

Es posible encriptar arrays con el metodo `encrypt`, para eso solo hay que convertir el `array` a JSON.

```
$arrayToEncrypt = array(
	"mensaje1" => "Soy una cadena de texto",
	"mensaje2" => "Soy otra cadena de texto"
);

$crypt->encrypt(json_encode($arrayToEncrypt));

$string = $crypt->getResult();

```

La desencriptación se realiza igual que lo descrito en [desencriptar](#desencriptar). Para obtener el resultado como un `array`, el método `getResult` acepta como parámetro "array" con lo cual devolverá la cadena desencriptada como un `array`.

```
 $crypt->decrypt($string);

 $crypt->getResult("array");

```

Manejo de errores
-----------------

[](#manejo-de-errores)

Al encriptar o desencriptar es posible que surja algún error, es posible obtener los errores con el método `getErrors`. Algunos de los posibles errores son los siguientes:

1. **Error 003:** Fallo al decodificar json
2. **Error 004:** Fallo al encriptar
3. **Error 005:** Fallo al desencriptar

Validación del Request
----------------------

[](#validación-del-request)

Mdcrypt es capaz de validar el `request` recibido antes de desencriptar el contenido, para ello se utiliza el método `validateRequest`. Si el `request` recibido no es valido `validateRequest` retornara `false`.

```
$crypt = new Mdcrypt('mi_proyecto');

$isValid = $crypt->validateRequest($request);

```

Para obtener el `request` validado.

```
$string = $crypt->getValidRequest();

```

El método `getValidRequest` devolverá la cadena encriptada lista para ser procesada como se vio en [desencriptar](#desencriptar).

También es posible validar el contenido desencriptado si este es un `array`, para ello Mdcrypt hace uso de la clase `Validator` de Laravel y es posible acceder a la función con el método `validator` de Mdcrypt.

```
$result = $crypt->getResult('array');
$rules = array(
	'mensaje1' => 'required'
);
$isValid = $crypt->validator($result,$rules);

```

Si los datos recibidos son validos `validator` retornara `true` de lo contrario `false`.
Si `validator` retorna `false` los errores pueden ser obtenidos con `getRequestErrors` el cual retornara un `array` con los errores obtenidos durante la validación de los datos recibidos.

### Manejo de errores

[](#manejo-de-errores-1)

A continuación se muestras los posibles errores al validar el `request`.

1. **Error 000:** Faltan parámetros
2. **Error 001:** Mas de un parámetro
3. **Error 002:** Request vacío
4. **Errores de validación:** Dependen de las reglas aplicadas.

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

888d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b993b43c5e7e4b1d355dac5e72adbe4f556ef878754c7a67b1672f701b810258?d=identicon)[onamanzi](/maintainers/onamanzi)

---

Top Contributors

[![onamanzi](https://avatars.githubusercontent.com/u/51280241?v=4)](https://github.com/onamanzi "onamanzi (4 commits)")

### Embed Badge

![Health badge](/badges/onamanzi-mdcrypt/health.svg)

```
[![Health](https://phpackages.com/badges/onamanzi-mdcrypt/health.svg)](https://phpackages.com/packages/onamanzi-mdcrypt)
```

###  Alternatives

[defuse/php-encryption

Secure PHP Encryption Library

3.9k162.4M214](/packages/defuse-php-encryption)[mews/purifier

Laravel 5/6/7/8/9/10 HtmlPurifier Package

2.0k16.7M113](/packages/mews-purifier)[robrichards/xmlseclibs

A PHP library for XML Security

41478.1M118](/packages/robrichards-xmlseclibs)[bjeavons/zxcvbn-php

Realistic password strength estimation PHP library based on Zxcvbn JS

87117.5M63](/packages/bjeavons-zxcvbn-php)[illuminate/encryption

The Illuminate Encryption package.

9229.7M280](/packages/illuminate-encryption)[paragonie/hidden-string

Encapsulate strings in an object to hide them from stack traces

7410.6M39](/packages/paragonie-hidden-string)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
