crypt — шифрует данные с переполнением стека

У меня есть этот код:

    $token = $this->hextobin($dataEncrypt);
$key = $this->key_192;
$iv = $this->iv;
$algorithm = 'xxxx';
$mode = 'ecb'; //QUESTION!!!
$td = mcrypt_module_open($algorithm, '', $mode, '') ;
$iv = substr($iv, 0, mcrypt_enc_get_iv_size($td));
$expected_key_size = mcrypt_enc_get_key_size($td);
$key = substr($key, 0, $expected_key_size);
mcrypt_generic_init($td, $key, $iv);
$response = trim(mdecrypt_generic($td, $token), '');
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$response = explode(XXXX,$response);
return $response[0];

Но, читая документацию по PHP, а именно: http://php.net/manual/en/function.mcrypt-ecb.php говорит, что таким образом устарел и рекомендует mcrypt_generic () и mdecrypt_generic () для замены.
У меня вопрос, как использовать эти функции, если вы спросите меня так же, как открытый режим?

0

Решение

Использовать mcrypt_generic() здесь объясняется:

Тем не менее, я бы порекомендовал более простой API mcrypt:

Пример использования:

mcrypt_encrypt(MCRYPT_3DES, "secret key", "data to encrypt", MCRYPT_MODE_ECB);

Я заметил, что у вас есть вопросительные знаки на ecb, Это «режим» шифрования, описанный здесь:

http://php.net/manual/en/mcrypt.constants.php

Согласно PHP Документам:

  • MCRYPT_MODE_ECB (электронная кодовая книга) подходит для случайных данных, таких как шифрование других ключей. Так как данные там короткие и случайные, недостатки ЕЦБ имеют благоприятный негативный эффект.
  • MCRYPT_MODE_CBC (цепочка блоков шифрования) особенно подходит для шифрования файлов, где безопасность значительно выше по сравнению с ECB.
  • MCRYPT_MODE_CFB (обратная связь шифра) — лучший режим для шифрования потоков байтов, где необходимо зашифровать отдельные байты.
  • MCRYPT_MODE_OFB (выходная обратная связь, в 8 битах) сравнима с CFB, но может использоваться в приложениях, где распространение ошибок не допускается. Он небезопасен (потому что работает в 8-битном режиме), поэтому его не рекомендуется использовать.
  • MCRYPT_MODE_NOFB (выходная обратная связь, в nbit) сравнима с OFB, но более безопасна, поскольку работает с размером блока алгоритма.
  • MCRYPT_MODE_STREAM это дополнительный режим для включения некоторых потоковых алгоритмов, таких как «WAKE» или «RC4».

Обновить
Если вы используете CBC режим, не забудьте установить iv вот так:

$size = mcrypt_get_iv_size(MCRYPT_3DES, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM);
echo mcrypt_encrypt(MCRYPT_3DES, "secret key", "data", MCRYPT_MODE_CBC, $iv);
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector