Как зашифровать с Twofish, используя режим шифрования ECB и режим заполнения блоков PKCS7?
Я хочу получить доступ к 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 ответ
mcrypt_encrypt
не поддерживает заполнение PKCS7. Это также устарело в течение значительного периода времени.
Если API, с которым вы хотите поговорить, использует режим Twofish и ECB, то вы, вероятно, вообще не хотите использовать этот API - если они счастливы использовать невероятно небезопасную схему шифрования для фронтального API, то остальные их кодовая база, вероятно, тоже довольно обманчива.