struct.pack показывает сдвинутые данные - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь использовать struct.pack, чтобы упаковать ха sh, но не получаю ожидаемого результата.

Вот как я собираю данные:

hash = hashlib.sha256(input).digest()
print('hash = ', hash.hex())
packed = struct.pack('!32p', hash)
print('packed = ', packed.hex()) 

Ниже приведен пример результата: ha sh = b5dbdb2b0a7d762fc7e429062d64b711d240e8f95f1c59fc28c28ac6677ffeaf

pack = 1fb5dbdb2b0a7d762fc7e4290d2 * 5f6 095 beffs 095 Это результат неправильного спецификатора формата?

РЕДАКТИРОВАТЬ: я считаю, что этот первый байт является длиной данных, потому что я использую 'p'. Есть ли способ избежать этого? Я не хочу включать это в мои упакованные данные

1 Ответ

0 голосов
/ 17 января 2020

Символ формата 'p' кодирует «Pascal строку», которая включает длину строки в начале. Это задокументировано . Если вы не хотите использовать этот формат 's', чтобы получить только сами байты:

packed = struct.pack('!32s', hash)
print('packed =', packed.hex())

Вывод:

packed = b5dbdb2b0a7d762fc7e429062d64b711d240e8f95f1c59fc28c28ac6677ffeaf
...