Intereting Posts
Изменения переопределения модуля Prestashop не видны preg_replace только теги OUTSIDE? (… мы не говорим о полном «анализе html», просто немного уценке) Предотвратить xdebug для разрыва в первой строке индексного файла Как получить полный путь к файлу при загрузке файлов в PHP? Импорт класса PHP Как глобально изменить значение пользовательских измерений для идентификатора клиента? PHP MongoDB обновляет несколько документов, используя $ in / $ или Facebook Проверьте, понравилась ли пользователю страница или нет. Экспорт данных Magento в 1.7 из 1.3 соскабливание страницы без RSS для создания фида Ошибки внутри выходного буфера MySQL и PHP Неожиданный T_Variable Добавить новую строку в MYSQL из Comma Разделяемый текст в текстовом поле Добавить миниатюру к результатам поиска ТОЛЬКО, если эскиз доступен? Можно ли указать интерфейс исходящей сети для использования в PHP SoapClient?

манипулирование байтами в двоичной строке

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

Однако всякий раз, когда я манипулирую байтами, он ломает вещи, что для меня означает, что я неправильно редактирую массив байтов строк. Вот моя реализация, как предложено ниже. Он выполняет шифрование и дешифрование непосредственно друг за другом для целей тестирования.

$string = "My Test String"; $size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($size, MCRYPT_RAND); $key = pack('H*', encryptKey()); $result = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, addpadding($string), MCRYPT_MODE_CBC, $iv); $ordVal = ord($result[5]); if($ordVal == 0) { $ordVal = 255; } else { $ordVal--; } //$result[5] = $ordVal; $data = base64_encode($iv . $result); $str = base64_decode($data); if(!str) { dieEncrypted("Unable to base64 decode string"); } $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC); $iv = substr($str,0,$ivSize); $str = substr($str,$ivSize); $ordVal = ord($str[5]); if($ordVal == 255) { $ordVal = 0; } else { $ordVal++; } //$str[5] = $ordVal; $key = pack('H*', encryptKey()); $result = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $str, MCRYPT_MODE_CBC, $iv); if(!$result) { dieEncrypted("Unable to unencrypt string"); } $result = strippadding($result); echo "The result is: $result|";