Как добавить заполнение нулевым байтом в phpseclib с методом шифрования 3des в режиме EBC?
Вот мой текущий код:
$cipher = new TripleDES(TripleDES::MODE_ECB);
$cipher->setKey('1234567890ABCDEFGHIJKLMN');
можем ли мы настроить символ заполнения в методе enablePadding? например $cipher -> enablePadding('\0');






Просто разберитесь:
Отключить заполнение:
$cipher->disablePadding();
Вручную дополнить сообщение:
$message_padded = $urlencoded;
if (strlen($message_padded) % 8) {
$message_padded = str_pad($message_padded,
strlen($message_padded) + 8 - strlen($message_padded) % 8, "\0");
}
зашифровать:
$result = $cipher -> encrypt($message_padded);
Ваш подход выглядит хорошо, но почему вы хотите это сделать? Кстати, вы можете добавить новый метод для переноса приведенных выше кодов, чтобы вы могли легко повторно использовать настраиваемый метод заполнения.
1. Поскольку существует сервис (партнер), для которого требуется описанный выше метод шифрования. 2. Попробую, спасибо за совет
Как насчет
$cipher->enablePadding();? ПосколькуTripleDESрасширяетDESрасширяетBlockCipherрасширяетSymmetricKey, вы можете использовать функциюenablePadding(), определенную в классеSymmetricKey: github.com/phpseclib/phpseclib/blob/master/phpseclib/Crypt/…. Хотя на самом деле не пробовал.