Una pequeña clase PHP que implementa el cifrado con preservación de formato a través de la red Feistel.
Puede instalar cryptomute a través de Composer (el empaquetador tiene el paquete loostro/ cryptomute ). En su archivo composer.json
use:
{
"require" : {
"loostro/ cryptomute " : " ^1.0 "
}
}
Y ejecute: php composer.phar install
. Después de eso puedes requerir el autocargador y usar cryptomute :
require_once ' vendor/autoload.php ' ;
use cryptomute cryptomute ;
$ cryptomute = new cryptomute (
' aes-128-cbc ' , // cipher
' 0123456789zxcvbn ' , // base key
7 , // number of rounds
);
$ password = ' 0123456789qwerty ' ;
$ iv = ' 0123456789abcdef ' ;
$ plainValue = ' 2048 ' ;
$ encoded = $ cryptomute -> encrypt ( $ plainValue , 10 , false , $ password , $ iv );
$ decoded = $ cryptomute -> decrypt ( $ encoded , 10 , false , $ password , $ iv );
var_dump ([
' plainValue ' => $ plainValue ,
' encoded ' => $ encoded ,
' decoded ' => $ decoded ,
]);
array(3) {
["plainValue"]=>
string(4) "2048"
["encoded"]=>
string(9) "309034283"
["decoded"]=>
string(4) "2048"
}
Cipher es el primer argumento del constructor. Los métodos de cifrado admitidos son:
Cifrar | IV |
---|---|
des-cbc | Sí |
aes-128-cbc | Sí |
aes-128-ecb | No |
aes-192-cbc | Sí |
aes-192-ecb | No |
camellia-128-cbc | Sí |
camellia-128-ecb | No |
camellia-192-cbc | Sí |
camellia-192-ecb | No |
La clave es el segundo argumento del constructor. Clave base de la que se derivan todas las claves redondas.
Rondas es el tercer argumento del constructor. Debe ser un número entero impar mayor o igual a 3. Más rondas es más seguro, pero también más lento. El valor recomendado es al menos 7.
$minValue
, $maxValue
)Establece valores mínimos y máximos. Si el resultado está fuera del rango, se volverá a cifrar (o volver a descifrar) hasta que la salida esté dentro del rango.
$plainValue
, $base
, $pad
, $password
, $iv
)Cifra datos. Toma los siguientes argumentos:
$plainValue
(cadena) datos de entrada que se cifrarán$base
(int) base de datos de entrada, los valores aceptados son 2 (binario), 10 (decimal) o 16 (hexadecimal)$pad
(bool) rellena la salida izquierda para que coincida con la longitud de $maxValue
?$password
(cadena) contraseña de cifrado$iv
(cadena): solo si el cifrado lo requiere$cryptValue
, $base
, $pad
, $password
, $iv
)Descifra datos. Toma los siguientes argumentos:
$cryptValue
(cadena) datos de entrada a descifrar$base
(int) base de datos de entrada, los valores aceptados son 2 (binario), 10 (decimal) o 16 (hexadecimal)$pad
(bool) rellena la salida izquierda para que coincida con la longitud de $maxValue
?$password
(cadena) contraseña de cifrado$iv
(cadena): solo si el cifrado lo requiere cryptomute tiene la licencia MIT License (MIT).