Как зашифровать с Twofish, используя режим шифрования ECB и режим заполнения блоков PKCS7? - PullRequest
0 голосов
/ 18 сентября 2018

Я хочу получить доступ к API с помощью PHP.Характеристики:

  • Двуфишный алгоритм
  • Режим шифрования ECB
  • Режим заполнения блока PKCS7

Я пробовал много разныхФункции и библиотеки PHP, но ни одна из них не работает.

Вот мой код:

function encrypt($data, $key)
{
  // Pad for PKCS7
  $blockSize = mcrypt_get_block_size(MCRYPT_TWOFISH, MCRYPT_MODE_ECB);
  $len = strlen($data);
  $pad = $blockSize - ($len % $blockSize);
  $data .= str_repeat(chr($pad), $pad);

  $encryptedData = mcrypt_encrypt( MCRYPT_TWOFISH, $key, $data, MCRYPT_MODE_ECB);

  return $encryptedData;
}

Вы видите проблему с этим кодом?

1 Ответ

0 голосов
/ 18 сентября 2018

mcrypt_encrypt не поддерживает заполнение PKCS7.Это также устарело в течение значительного периода времени.

Если API, с которым вы хотите общаться, использует режим Twofish и ECB, то вы, вероятно, вообще не хотите использовать этот API - если онис удовольствием взломать невероятно небезопасную схему шифрования для фронтального API, тогда остальная часть их кодовой базы, вероятно, тоже довольно обманчива.

...