Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 07.08.2015
Сообщений: 58

Корректно преобразовать массив кодов символов в строку string

02.05.2017, 19:16. Показов 1345. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые Гуру!

Понадобилось обмениваться зашифрованными строками между php и С++
Нашел абсолютно рабочий алгоритм RC4 на php и решил переписать его на С++
На всех этапах (при трассировке кодов на PHP и С++) я получаю одинаковые данные во всех массивах.
Но на последнем этапе - преобразование массива с кодами символов зашифрованного текста в string,
получаю результат, отличный от результата в PHP

Ошибка в строке преобразования кода символа в char

Подскажите пожалуйста в чем я "косячу"
PHP
1
2
3
4
5
6
7
8
$text = "Text";                             //Исходный текст
$arrText = array(101,20,205,100);          //Результат после XOR
for ($i=0; $i<count($arrText); $i++)
{
$temp= $temp.chr($arrText[$i]);          //Переводим массив символов в бинарную строку получаем значение "e�d"
}
$crypt = base64_encode($temp);
//получаем результат     ZRTNZA==
С++
C++
1
2
3
4
5
6
7
8
string str = "";
std::vector<int> vText(101,20,205,100);   //Результат после XOR
for (int i = 0; i < (int)vText.size(); i++)
{
   str.push_back(char(vText[i]));    //Переводим массив байтов в бинарную строку  получаем значение "e\x14Нd" 
   //str.push_back(static_cast<char>(vText[i]));  //Пробовал и так. Получаем значение "e\x14Нd"
}
//После преобразования Base64 результат - "ZRTQnWQ="  (функция преобразования в Base64 работает корректно!)
Я пробовал преобразовать массив кодов в массив char, чтобы потом перевести его в string,
но в массиве char - уже несоответствие.

Пробовал вместо char использовать при преобразовании unsigned char,
но безуспешно.
Помогите пожалуйста разобраться

Заранее благодарен всем кто захочет помочь!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.05.2017, 19:16
Ответы с готовыми решениями:

Преобразовать массив символов char в строку String
Считываю из файла посимвольно, формирую массив. Нужно поместить это все в ячейку dataGridView. Как преобразовать массив символов char в...

Как корректно преобразовать lpVolumeSerialNumber в строку символов?
каким должен быть размер lpVolumeSerialNumber и lpFileSystemFlags, чтобы вместить значения этих параметров, и как корректно преобразовать...

Как преобразовать строку в массив String []?
Есть переменная, в которой записан текст из файла. Эту переменную необходимо преобразовать в стринговый массив (String ). Как можно решить...

3
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
02.05.2017, 21:11
Ты словами объясни, что хочешь получить. Просто записать 101 в char? Тогда преобразования не нужны.
И почему в PHP у тебя из четырёх элементов получилось 5 символов?
0
1 / 1 / 1
Регистрация: 07.08.2015
Сообщений: 58
02.05.2017, 22:21  [ТС]
nmcf, спасибо что откликнулся

Мне нужно из значений вектора vText получить бинарную строку,
которую затем нужно преобразовать в формат base64 и отправить на сервер в скрипт PHP,
где будет происходить расшифровка.

То же самое и в другом направлении:
На сервере шифровка PHP -> строка Base64 -> C++ расшифровка и в текстовое поле базы SQLite

Поэтому результаты алгоритма в PHP и С++ должны быть идентичны

Я уже делал реализацию RC4 для С# и у меня связка PHP->C#->PHP работает безупречно.
Но мне нужно сейчас реализацию RC4 именно для связки PHP-> C++->PHP

И вся загвоздка только в одной строке кода с++!

А что касается "несоответствия символов в PHP", то это просто искажение сообщения при отправке (кодировка)
При предварительном просмотре сообщения было другое значение
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
02.05.2017, 22:54
Цитата Сообщение от arbit Посмотреть сообщение
это просто искажение сообщения при отправке (кодировка)
При предварительном просмотре сообщения было другое значение
Какое другое было?

Добавлено через 2 минуты
Цитата Сообщение от arbit Посмотреть сообщение
//Переводим массив байтов в бинарную строку
Что такое бинарная строка? Чем отличается от небинарной? Зачем тут int-ы, если текст обрабатывается? Или значение, после xor, может получиться больше, чем 255?

Добавлено через 2 минуты
C++
1
2
    char arr[] = {101,20,205,100};
    string str(begin(arr), end(arr));
Добавлено через 1 минуту
Цитата Сообщение от arbit Посмотреть сообщение
получаем значение "e\x14Нd"
Какое нужно?

Добавлено через 1 минуту
Цитата Сообщение от arbit Посмотреть сообщение
при отправке (кодировка)
Может дело в кодировке?

Добавлено через 2 минуты
205 (CD), в кодировке CP1251 - это 'Н' (кириллица).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.05.2017, 22:54
Помогаю со студенческими работами здесь

ПреобразоваТЬ строку символов в массив
#include &lt;cstdio&gt; #include &lt;cctype&gt; #include &lt;iostream&gt; #include &lt;cmath&gt; #include &quot;QTime&quot; void stuToArr(char s, int ar,...

Преобразовать строку в массив символов
В конструктор задаётся строка типа String. Ее содержимое: первая строка - преобразовать в число int(пусть n), следующая строка -...

Преобразовать массив символов в строку
Правильна ли запись в strs , нужно что бы значения переменных последовательно были записаны в strs для получения примерно такой строки...

Как преобразовать строку в массив символов?
Доброго времени суток. Имеется строка, полученная из lineEdit. Например 22+2. Необходимо эту строку разобрать по символам и каждый символ...

Как преобразовать строку в массив символов
Подскажите пожалуйста, в данной программе пользователь вводит символ и получает закодированный символ. Нужно чтобы пользователь мог вводить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru