У меня есть клиент, использующий прокси-сервер через аутентификацию, и у меня возникают проблемы с правильной шифровкой.
Это вся информация, которую я имею от клиента:
До сих пор у меня есть следующий код, но я не на 100%. Я делаю шифрование правильно, а также не знаю, как реализовать дополнение RSSL_PAD_ISO10126, или что делать с кейгентом PKCS5-V20. Я нашел здесь еще одно сообщение, в котором объясняется, что шифрование aes256 было MCRYPT_RIJNDAEL_128. Будем очень благодарны за любую информацию о том, как действовать.
public static function ptaLink($pid, $params = [])
{
$url = \Config::get('chat.ptaBaseUrl');
$params['p_userid'] = $pid;
$params['p_ccf_1'] = $pid;
$ptaDataString = self::buildParams($params);
return $url.$ptaDataString;
}
public static function buildParams($params) {
$defaultParams = [
'p_userid' => '', // PID
'p_passwd' => '',
'p_ccf_1' => '', // PID
'p_li_expiry' => time(),
];
$params = array_merge($defaultParams, $params);
//Convert PTA data array to string
$ptaDataString = "";
foreach($params as $key=>$value)
{
$ptaDataString .= ($ptaDataString === "") ? '' : '&';
$ptaDataString .= "$key=$value";
}
$ptaDataString = self::encryptData($ptaDataString);
return $ptaDataString;
}
public static function encryptData($text) {
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM);
$key = \Config::get('chat.secretKey');
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv);
//Base64 encode the data
$ptaDataString = base64_encode($crypttext);
//Make sure the data is URL safe
$ptaDataString = strtr($ptaDataString, array('+' => '_', '/' => '~', '=' => '*'));
return $ptaDataString;
}
Реализация здесь для тех, кому это когда-либо понадобится, https://github.com/ircmaxell/PHP-CryptLib/blob/master/lib/CryptLib/Encryption/PackingMode/ISO10126.php
mcrypt_encrypt
у вас есть только вызовmcrypt_encrypt
а мы должны запрограммировать все остальное?