Я поставил задачу интегрировать систему нашей компании во внешнюю систему через API. Когда я прочитал об API, он заявил, что данные должны быть зашифрованы с использованием MD5 и Triple Des Encryption, поэтому я провел некоторое исследование о том, как это сделать.
// Here's the credentials to be used for encryption.
$key = 'dEvu4MHkqz7mRgeqmB1mQEXi';
$iv = "avz9bUNx";
Данные должны быть отформатированы как строка JSON перед шифрованием.
$params = array(
'Number' => '+11177109886' // example
);
$text = json_encode($params);
После этого я сделал несколько кодов для его шифрования.
function apiEncode($text, $key, $iv)
{
// to append string with trailing characters as for PKCS7 padding scheme
$block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
$padding = $block - (strlen($text) % $block);
$text .= str_repeat(chr($padding), $padding);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv);
return base64_encode($crypttext);
}
Я получил ошибку.
Предупреждение: mcrypt_encrypt (): получил вектор инициализации размером 0,
но размер 32 требуется для этого режима шифрования в
/Applications/XAMPP/xamppfiles/htdocs/dapsapi/rdremit.php в строке 20
Задача ещё не решена.
Других решений пока нет …