问题
I have a text representation of a encrypted buffer (via gcrypt) as follows:
(enc-val
(ecdh
(s #04FA304FE9E91BED21E3C5898796056CE4E590E12BC74D0219A185D2E0B9B49A7393F023415F3E1FFD22D5B0A134E03F84D5C5DF7C5326C51971CFB783A26F1636#)
(e #0411C41FC2ECB6F6F482050C005B30F75E134FD8AEA1E45F687A9E995CCFFB14DDD8EA41462E41CAEBA2AA21CA8F70C67FF4AA6620E64BABA23CCA0088F292256D#)
)
)
I then convert this text string to a (uint_8) value array via the function data_from_string. The function is as follows:
size_t data_from_string(const char *str, uint8_t **data)
{
char tmp[3];
size_t size, i;
info("data_from_string");
size = strlen(str) / 2;
*data = (uint8_t *)malloc(size);
if (*data == NULL)
return 0;
tmp[2] = '\0';
for (i = 0; i < size; i++) {
memcpy(tmp, str + (i * 2), 2);
(*data)[i] = (uint8_t) strtol(tmp, NULL, 16);
}
return size;
}
The data_from_string function is a used by Bluez to encode a character string and sent it to a connected device. It does produce an encoded (uinit_8) value array as follows:
0000000A0000EC0D0000000004FA304FE9E91BED21E3C5898796056CE4E590E12BC74D0219A185D2E0B9B49A7393F023415F3E1FFD22D5B0A134E03F84D5C5DF7C5326C51971CFB783A26F16360000000E00411C41FC2ECB6F6F482050C005B30F75E134FD8AEA1E45F687A9E995CCFFB14DDD8EA41462E41CAEBA2AA21CA8F70C67FF4AA6620E64BABA23CCA0088F2922560D00000000
I was looking for a means to restore the encoded (uinit_8) value array back to its original text representation.
Does anyone have a notion how to perform this task?
来源:https://stackoverflow.com/questions/30143148/decode-array-unit8-t-array-to-char-array