Uma pequena classe PHP implementando criptografia de preservação de formato via Feistel Network.
Você pode instalar cryptomute via Composer (o packagist possui o pacote loostro/ cryptomute ). No seu arquivo composer.json
use:
{
"require" : {
"loostro/ cryptomute " : " ^1.0 "
}
}
E execute: php composer.phar install
. Depois disso, você pode solicitar o autoloader e 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 é o primeiro argumento do construtor. Os métodos de criptografia suportados são:
Cifra | 4 |
---|---|
des-cbc | sim |
aes-128-cbc | sim |
aes-128-ecb | não |
aes-192-cbc | sim |
aes-192-ecb | não |
camellia-128-cbc | sim |
camellia-128-ecb | não |
camellia-192-cbc | sim |
camellia-192-ecb | não |
Key é o segundo argumento do construtor. Chave base da qual todas as chaves redondas são derivadas.
Rounds é o terceiro argumento do construtor. Deve ser um número inteiro ímpar maior ou igual a 3. Mais rodadas é mais seguro, mas também mais lento. O valor recomendado é de pelo menos 7.
$minValue
, $maxValue
)Define valores mínimo e máximo. Se o resultado estiver fora do intervalo, ele será criptografado novamente (ou descriptografado novamente) até que a saída esteja dentro do intervalo.
$plainValue
, $base
, $pad
, $password
, $iv
)Criptografa dados. Leva os seguintes argumentos:
$plainValue
(string) dados de entrada a serem criptografados$base
(int), os valores aceitos são 2 (binário), 10 (decimal) ou 16 (hexadecimal)$pad
(bool) pad deixou a saída para corresponder ao comprimento de $maxValue
?$password
(string) senha de criptografia$iv
(string) - somente se a cifra exigir$cryptValue
, $base
, $pad
, $password
, $iv
)Descriptografa dados. Leva os seguintes argumentos:
$cryptValue
(string) dados de entrada a serem descriptografados$base
(int), os valores aceitos são 2 (binário), 10 (decimal) ou 16 (hexadecimal)$pad
(bool) pad deixou a saída para corresponder ao comprimento de $maxValue
?$password
(string) senha de criptografia$iv
(string) - somente se a cifra exigir cryptomute é licenciado sob a licença MIT (MIT).