LINUX.ORG.RU

[python]Сконвертировать целое число в байтовую строку

 


0

2

Какой самый эффективный способ сконвертировать целое число в байтовую строку в питоне (2.7)? Есть такой вариант:

binascii.unhexlify("%x" % n)

Подозреваю, что это не самый эффективный метод. Через struct сделать не выходит - не работает для больших чисел.

★★★★★

Ответ на: комментарий от anonymous

Чтоб записать двоичные данные как раз и надо иметь байтовую строку.

provaton ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Не работает, у меня очень большое число (битовая длина - 4096)

In [3]: struct.unpack('q', struct.pack('q', a))
---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
/home/nss/<ipython-input-3-93355da72edb> in <module>()
----> 1 struct.unpack('q', struct.pack('q', a))

error: integer out of range for 'q' format code
provaton ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

> И в каком «двоичном представлении» ты хочешь его видеть? %)

Мне надо закодировать RSA-подпись так, что можно было ее верифицировать в php (пока пробую через http://phpseclib.sourceforge.net/). pycrypto возвращает подпись числом. phpseclib число не читает, читает байтовую строку. Вот и думаю что делать. Брать openssl не хочется, там API какой-то жуткий, а задача-то простейшая.

provaton ★★★★★
() автор топика
Ответ на: комментарий от provaton

Ты думаешь, мне хочется странного?

Я думаю, что «байтовая строка» - это не ответ.

Можешь посоветовать другие пути решения?

Кроме hex? Нет.

tailgunner ★★★★★
()
Ответ на: комментарий от provaton

4096

С этого и надо было начинать.

anonymous
()
Ответ на: комментарий от tailgunner

Ступил я - метод для подписи взял не тот, который нужно было, слишком низкоуровневый.

Может кому-то нужно - в туториале pycrypto неправильная информация, использовать методы sign и verify из модуля RSA нельзя (они нигде кроме pycryto не работают). Надо использовать методы отсюда - https://www.dlitz.net/software/pycrypto/api/current/Crypto.Signature.PKCS1_PS...

provaton ★★★★★
() автор топика
Ответ на: комментарий от provaton

использовать методы sign и verify из модуля RSA нельзя

Гм. А я использовал и проблем на другой стороне с проверкой подписи не было.

baverman ★★★
()
Ответ на: комментарий от baverman

Странно, phpseclib ни в какую не хотел валидировать подпись от pycrypto, пока не начал другим методом подписывать. Странно. Ну ладно, работает и хрен с ним.

provaton ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.