Небольшой PHP-класс, реализующий шифрование с сохранением формата через сеть Feistel.
Вы можете установить cryptomute через Composer (у пакета есть пакет loostro/ cryptomute ). В вашем файле composer.json используйте:
{
"require" : {
"loostro/ cryptomute " : " ^1.0 "
}
} И запустите: php composer.phar install . После этого вы можете запросить автозагрузчик и использовать 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 — это первый аргумент конструктора. Поддерживаемые методы шифрования:
| Шифр | IV |
|---|---|
des-cbc | да |
aes-128-cbc | да |
aes-128-ecb | нет |
aes-192-cbc | да |
aes-192-ecb | нет |
camellia-128-cbc | да |
camellia-128-ecb | нет |
camellia-192-cbc | да |
camellia-192-ecb | нет |
Ключ — второй аргумент конструктора. Базовый ключ, из которого получаются все раундовые ключи.
Rounds — третий аргумент конструктора. Должно быть нечетное целое число, большее или равное 3. Чем больше раундов, тем безопаснее, но и медленнее. Рекомендуемое значение — не менее 7.
$minValue , $maxValue )Устанавливает минимальное и максимальное значения. Если результат выходит за пределы диапазона, он будет повторно зашифрован (или повторно расшифрован) до тех пор, пока выходные данные не попадут в диапазон.
$plainValue , $base , $pad , $password , $iv )Шифрует данные. Принимает следующие аргументы:
$plainValue (строка) входные данные для шифрования$base (int) база входных данных, допустимые значения: 2 (двоичные), 10 (десятичные) или 16 (шестнадцатеричные).$pad (bool) дополнить левый вывод, чтобы он соответствовал длине $maxValue ?$password (строка) пароль шифрования$iv (строка) вектор инициализации - только если этого требует шифр$cryptValue , $base , $pad , $password , $iv )Расшифровывает данные. Принимает следующие аргументы:
$cryptValue (строка) входные данные для расшифровки$base (int) база входных данных, допустимые значения: 2 (двоичные), 10 (десятичные) или 16 (шестнадцатеричные).$pad (bool) дополнить левый вывод, чтобы он соответствовал длине $maxValue ?$password (строка) пароль шифрования$iv (строка) вектор инициализации - только если этого требует шифр cryptomute распространяется под лицензией MIT License (MIT).