powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Что такое сложение по модулю?
25 сообщений из 75, страница 2 из 3
Что такое сложение по модулю?
    #34304686
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarin
Думал. Многое в питоне написано на сях. Интерпретатор действительно не шибко быстр (хотя в последних версиях многого добились в плане улучшения). В любом случае: сначала я буду писать на питоне. Чтобы почувствовать алгоритм кончиками пальцев. Потом можно переписать на сях. Мне интересно самому реализовать алгоритм

Я часто так делаю: сначала напишу на пайтоне, потом переписываю на Жаве или сях. Трудно поверить, но получается быстрее. И качество кода повышается.

Не знаю. Не уверен, что побитовые операции на будет удобно реализовывать.

Кстати я сегодня нашел сравнительный анализ ГОСТ-а и DES-a. Пишет тот же самый знаменитый криптограф. Вот ссылка на главу из книги.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304688
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinЯ часто так делаю: сначала напишу на пайтоне, потом переписываю на Жаве или сях. Трудно поверить, но получается быстрее. И качество кода повышается.
Это значит, что у Вас есть очевидный резерв роста. Проанализировать-разобраться в причинах, отказаться от лишних конвертаций, и начнет получаться еще быстрее и качественнее.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304712
Фотография Ruslan.Isbarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКстати я сегодня нашел сравнительный анализ ГОСТ-а и DES-a. Пишет тот же самый знаменитый криптограф. Вот ссылка на главу из книги.
Завирает он там немного :)... Патриотизм у него через край хлещет (из примечания редактора в бумажном источнике).
Примерно год назад реализовывал алгоритм ГОСТ 28147-89 на Java. Читал того самого "знаменитого криптографа", частично взял его реализацию. Кстати, довольно таки шустро получилось, на питоне думаю еще шустрей будет.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304783
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ruslan.Isbarov
Завирает он там немного :)... Патриотизм у него через край хлещет (из примечания редактора в бумажном источнике).

(пожимает плечами)

Шнайер аргументирует свои слова. А мнение редактора - для меня ничего не значит.

Примерно год назад реализовывал алгоритм ГОСТ 28147-89 на Java.
Поделитесь бинарником?

P.S. Любопытно...
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304974
ZeusTheTrueGod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну сколько раз можно изобретать велосипед. Человек вот решил написать криптоалгоритм
1. Надо найти описание криптоалгоритма, причем желательно не на форуме, а в оригинале
2. Этот криптоалгоритм надо запрограммировать, но не факт что в результате программирование получиться именно то,что он хотел
3. Нужно придмуать, либо найти готовый криптографический протокол. То есть где хранится ключевая информация, как она передаётся, какова последовательность действий.
Ну и наконец, самое сложное, проверить, что удалось запрограммировать именно гост или DES
Например, как будет создаваться ключ?Пользователь его будет вводить или он будет случайно делаться.
Так что лучше взять готовое, всё равно самому лучше не получиться.
Самое главное -а как проверить, что получился тот алгоритм, который требовался? Это обычнуюб рпограмму запустил пару раз - вроде работает. С криптографией надо убедиться, что работает для тех, у кого есть ключ и не работает для тех, у кого его нет.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304989
Фотография Ruslan.Isbarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПоделитесь бинарником?
Увы, не поделюсь. Ибо коммерческая тайна (криптографический модуль - часть еще не завершенного проекта, работа над которым ведется до сих пор) и публиковать ее в форумах не буду. Готов всячески помогать и содействовать автору треда как в технических вопросах, так и в вопросах реализации.

Кстати, раз уж речь зашла о реализациях, кину парочку ссылок:

Jacksum - реализация довольно таки большого числа криптографических алгоритмов на Java (Open Source). Есть реализация ГОСТ.
Описание некоторых алгоритмов и реализации на различных языках. Тут же есть отличный мануал по Twofish.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304996
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZeusTheTrueGod..

Да бросьте вы это!

Разве Сарин говорил что пишет криптоалгоритм? Он его РЕАЛИЗУЕТ для Питона. Попутно изучая особенности практического применения криптографии. Я когда-то сам так делал. Не вижу в этом никакой крамолы.

Оригинал алгоритма - это блок-схема со стрелочками и математическими знаками. И разгребать её ни к чему. Это удел математиков-теоретиков. Есть реализация на С у того-же Шнайера. ИМХО проще её перевести на императивный язык (я думаю Python прекрасно подойдет) и применить.

Ну а по поводу тестирования - это вы уж совсем, батенька... не в ту степь... Если вы не знаете как проверить правильность работы реализованного алгоритма - то ... хм.. обращайтесь ко мне. Я вам расскажу как за 10-20 тестов убедится на 99.9999% что софт не содержит ошибок.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34305000
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ruslan.Isbarov..

Спасибо, Руслан. Вот вам и от меня ссылочка.

http://www.cryptix.org/

Может пригодится.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34305063
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton ZeusTheTrueGod..

Да бросьте вы это!

Разве Сарин говорил что пишет криптоалгоритм? Он его РЕАЛИЗУЕТ для Питона. Попутно изучая особенности практического применения криптографии. Я когда-то сам так делал. Не вижу в этом никакой крамолы.

Оригинал алгоритма - это блок-схема со стрелочками и математическими знаками. И разгребать её ни к чему. Это удел математиков-теоретиков. Есть реализация на С у того-же Шнайера. ИМХО проще её перевести на императивный язык (я думаю Python прекрасно подойдет) и применить.

Ну а по поводу тестирования - это вы уж совсем, батенька... не в ту степь... Если вы не знаете как проверить правильность работы реализованного алгоритма - то ... хм.. обращайтесь ко мне. Я вам расскажу как за 10-20 тестов убедится на 99.9999% что софт не содержит ошибок.
Спасибо на добром слове:)

Мне просто интересно написать самому. Я отлично понимаю, что все эти алгоритмы сотню раз реализованы. Но можно будет себя пяткой в груль ударить, что сделал свою реализацию.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34305073
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как же не хватает доски с фломастерами...

32 бита надо разбить на 8 4х-битовых элементов. Сейчас я делаю это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
import struct

def BasicStep(n, x):
    if len(n) !=  8 : raise TypeError, ("N must have len 8", n)
    if len(x) !=  4 : raise TypeError, ("X must have len 4", x)
    n1v = struct.unpack('I', n[ 0 : 4 ])[ 0 ]
    n2v = struct.unpack('I', n[ 4 : 8 ])[ 0 ]
    xv = struct.unpack('I', x)[ 0 ]
    s = (n1v + xv) %  2 ** 32 
Думаю код понятен вполне. Я разбиваю входные 8 байт (64 бита) на два куска и сразу преобразую их в беззнаковые целые. Также в беззнаковое целое я преобразую 4 байта ключа.

Как разбить s на 8 кусков по 4 байта? Можно ли так:
упаковать в строку как беззнаковое целое, каждый символ строки преобразовать в беззнаковое число, получить два числа применяя xor 00001111 и xor 11110000?

Как-то громоздко, имхо, и не оптимально. Хотя вроде сворачивание/разворачивание операции не трудные. Но что-то мне кажется, что я не то делаю:)

Код: plaintext
ROLLBACK;
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34305075
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinКак разбить s на 8 кусков по 4 байта?
Проще всего сдвигом. Примерно так:

Код: plaintext
1.
2.
3.
4.
 for  i :=  0   to   7   do 
 begin 
  piece [ i ] := value  and  $F ;
  value := value  shr   4  ;
 end  ;

Как это будет выглядеть в Ваших структурах, не знаю.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34305082
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дошел до такого способа: старшие 4 бита получаются сдвигом вправо на 4 бита.
Младшие - xor 0xf0

Код: plaintext
1.
2.
3.
4.
>>> 0xfe >>  4 
 15 
>>> 0xfe ^ 0xf0
 14 

Код: plaintext
ROLLBACK;
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34305085
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прикольно. Каждый на своём языке пишет.

P.S. Вспомнилась Вавилонская Башня...
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34305089
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПрикольно. Каждый на своём языке пишет.
А что Вас удивляет? Это обычная ситуация, в том числе и для "обычных" языков: как правило человек умеет читать-понимать на большем количестве языков, нежели умеет [грамотно] писать. Поэтому не так редки беседы, когда каждый говорит-пишет на своем родном языке, который остальные худо-бедно понимают.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34305090
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я Делфи понимаю, в общем-то. Когдато давно писал на нём (блин, уже есть языки на которых я когдато давно писал), а у пайтона побитовые операторы позаимствованы из Си. Полагаю они понятны всем.

Код: plaintext
ROLLBACK;
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34305118
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ну а по поводу тестирования - это вы уж совсем, батенька... не в ту степь... Если вы не знаете как проверить правильность работы реализованного алгоритма - то ... хм.. обращайтесь ко мне. Я вам расскажу как за 10-20 тестов убедится на 99.9999% что софт не содержит ошибок.

рассказали бы на форуме.

чето вспомнилась тоненькая, в мягкой обложке монография Майерса.
Не та, которая "надежность программного обеспечения"
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34305128
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ура, люди! Я извращенец, но я это сделал!
Получение старшей и младшей частей числа.
Код: plaintext
1.
2.
3.
4.
5.
    for i in s:
        v = ord(i)
        senior = v >>  4 
        junior = v - (senior <<  4 )
        print "%(i)s\t%(v)x\t%(senior)x\t%(junior)x" %vars()
s - строка из 4х символов. Бежим по ней. i - символ строки.
А вот, что получилось:
Код: plaintext
1.
2.
3.
4.
5.
 1751540834  bdfh
b	 62 	 6 	 2 
d	 64 	 6 	 4 
f	 66 	 6 	 6 
h	 68 	 6 	 8 
Первая строка - число и 4 символа в которых она закодирована.

Код: plaintext
ROLLBACK;
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34305142
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что в Питоне символ - всегда один байт?
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34305143
ZeusTheTrueGod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarin
Спасибо на добром слове:)

Мне просто интересно написать самому. Я отлично понимаю, что все эти алгоритмы сотню раз реализованы. Но можно будет себя пяткой в груль ударить, что сделал свою реализацию.

Ну так что толку то? кто сертифицировал твой алгоритм(его реализацию)? А главное, что получает тот, кто применяя твой алгоритм хочет добиться некоторой безопасности своих данных. Предположим, что алгоритм может получиться без ошибок, только как им пользоваться? Вполне возможно ситуация, что ключ будет генерироваться по алгортиму, в начале которого стоит randomise timer или еще что-то похожее, то есть ключ будет вырабатываться на основе стандартеого генератора случайных чисел - а это всего 2 в 32 степени различных ключей. Или получиться так, что в системе шифруются не все данные, которые надо защитить, а только некоторые.

Очень интересно выслушать про тестирование реализации ГОСТа или DES.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34305711
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА что в Питоне символ - всегда один байт?
Гы:) Очень надеюсь что да

Вообщето есть строки обычные и строки unicode. В обычных строках вроде 1 байт.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34307249
Фотография chii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой-то странный язык Питон... неужели там нельзя делать ассемблерные вставки? Существует очень много вариантов реализаций ГОСТ на ассемблере, и все они априори работают быстрее, чем реализации на любых высокоуровневых языках.
Если надо, могу скинуть ссылки.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34307299
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chiiКакой-то странный язык Питон... неужели там нельзя делать ассемблерные вставки?
Не знаю насчет Асма, но афтор упоминал о том, что бинарники, собранные в С++ внедряется превосходно.

chiiЕсли надо, могу скинуть ссылки.
Давай.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34307530
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chiiКакой-то странный язык Питон... неужели там нельзя делать ассемблерные вставки? Существует очень много вариантов реализаций ГОСТ на ассемблере, и все они априори работают быстрее, чем реализации на любых высокоуровневых языках.
Если надо, могу скинуть ссылки.
Идиология пайтона примерно как у Жавы. Только он ещё более высокоуровневый.

Я понимаю, что это нафиг не нужно. Но я захотел понять алгоритм. Почувствовать его.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34307537
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, я уже написал три базовых цикла. Для зашифрования, расшифрования и имитовставки.

Завтра, или сегодня дома, буду писать алгоритмы шифрования.

Я не совсем понял зачем нужна имитовставка. Почему нельзя использовать контрольную сумму для той же цели и дописать её в шифруемые данные?

Код: plaintext
ROLLBACK;
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34308458
Фотография chii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Контрольная сумма тоде должна быть по ГОСТу. Фактически, имитовставка - это и есть нечто вроде контрольной суммы
...
Рейтинг: 0 / 0
25 сообщений из 75, страница 2 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Что такое сложение по модулю?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]