2013-04-15 3 views
2

В C++ у меня есть зашифрованный AES символ *, который я преобразовываю в его представление HEX перед отправкой его в качестве параметра URL, just as it is done in this question. Теперь я хочу сделать обратное, которое снова преобразует такой hex обратно в char *. Однако я озадачен здесь - использование sprintf с% x или% s приведет к совершенно другому значению. Как я могу преобразовать его снова? Спасибо ...Преобразование AES зашифрованной шестнадцатеричной строки обратно в строку в C++

+0

Что вы пробовали Вы могли бы выделить буфер размером strlen (hex)/2, а затем пересечь строку, разыгрывая пары цифр обратно в char с помощью sscanf и сохраняя их в нужном месте в буфере. Возможно, попробуйте это, а затем покажите нам свой код, если вы не можете заставить его работать. –

+1

Обратный символ 'sprintf' -' sscanf', а не другой 'sprintf'. Другими словами - вы ЧИТАЛИЕ а не ПИСЬМО. В 'sscanf' в строке формата говорится:« Начиная с этой строки, используя этот формат, найдите это значение ». Вы можете понять это оттуда? – Floris

ответ

2

Вы можете использовать sscanf() как это:.?

#define LEN 16 /* 128/8 */ 

void aes_to_char(char *aes, char *res) 
{ 
    int i; 
    for (i = 0; i < LEN; i++) { 
    sscanf(aes, "%2hhx", &res[i]); 
    aes += 2; 
    } 
} 

"%2hhx" означает «2-символьному шестнадцатеричное значение, которые должны быть сохранены в char *

Смежные вопросы