Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 24, 2010 21:06:59

Kamigawa
От:
Зарегистрирован: 2010-11-24
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Битовые операции \ работа с типом bytes

Здравствуйте. Полчаса гугла, к сожалению, не помогло полностью найти ответ.

Хочу реализовать на Питоне криптографический алгоритм наподобие DES (знаю, что есть такие модули, но хочу сделать это руками). Сейчас уперся в то, что не знаю как трактовать любые данные в двоичном представлении (для последующих битовых операций, операций сдвига, перестановок итп).
допустим, имеется текстовый файл text.txt, в нем какой то текст. N - размер блока, которым мы будем оперировать. Желаемый алгоритм - чтение блока, операции над ним, записывание блока в другой текст (ака шифрование). Все упирается в том, что не совсем понимаю как в Питоне представить блок как двоичное число.

как я понимаю, чтению блоками будет выглядеть так:

input = open("text.txt", "rb")     # открыли для чтения
block = input.read(N) # загрузили первый блок размера N
получили тип bytes.
Что дальше делать? Можно перевести в строку, но как перевести строку в двоичное представление я тоже н еочень понимаю.

Буду рад любым советам, либо ссылке, где можно почитать (англ тоже подойдет). Понимаю, что Питон не очень предназначен для операций такого уровня, но все же надеюсь, что возможность имеется.



Офлайн

#2 Ноя. 24, 2010 21:33:19

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Битовые операции \ работа с типом bytes

В строку переводить не нужно - у вас уже есть байты. Строка - последовательность символов.
ord(block) даст число. Делайте над ним свои логические операции.



Офлайн

#3 Ноя. 25, 2010 10:54:22

python4ik
От:
Зарегистрирован: 2010-01-05
Сообщения: 251
Репутация: +  0  -
Профиль   Отправить e-mail  

Битовые операции \ работа с типом bytes

ord(block) << 1 #смещение битов влево на один или умножение на 2 (быстрое)
ord(block) & 1 #побитовое И
ord(block) | 1 #побитовое ИЛИ



Отредактировано (Ноя. 25, 2010 10:55:57)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version