powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Что такое сложение по модулю?
75 сообщений из 75, показаны все 3 страниц
Что такое сложение по модулю?
    #34304251
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сложение по модулю 2 это, как я понял, XOR.
А вот что такое сложение по модулю 2 32 ? Это 32 раза повторённый XOR, чтоли?

Простите, я тупой. В детстве по голове били.

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

аффтопитезь: объект либо именован, либо не существует
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304268
SnowMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Берутся 2 целях числа в диапозоне [0, 2 32 ] и складываются, результатом считается остаток от деления полученной суммы на 2 32 .
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304335
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarin Это 32 раза повторённый XOR, чтоли?
Контрольный вопрос: что получится в результате 32 раз повторенного XOR-а?

Это скажем http://www.intuit.ru/department/se/pbmsu/2/ читать от слов "кольцо вычетов".
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304336
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SnowMan2Берутся 2 целях числа в диапозоне [0, 2 32 ] и складываются, результатом считается остаток от деления полученной суммы на 2 32 .
Спасибо.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304338
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SnowMan2Берутся 2 целях числа в диапозоне [0, 2 32 ]
Почти верно :)

Aklinпростой хор то же далает и для 32 битных чисел.
Вы как всегда в своем репертуаре.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304350
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer SnowMan2Берутся 2 целях числа в диапозоне [0, 2 32 ]
Почти верно :)

А как чтоб совсем верно?:)
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304360
SnowMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА как чтоб совсем верно?:)
Берутся 2 целях числа в диапозоне [0, 2 32 -1]
Давно не занимался подзабыл.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304363
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SnowMan2 авторА как чтоб совсем верно?:)
Берутся 2 целях числа в диапозоне [0, 2 32 -1]
Давно не занимался подзабыл.
Тоесть 4 байта. И с ними делается XOR?
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304367
SnowMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТоесть 4 байта. И с ними делается XOR?
Для 2 32 - да. Для остальных чисел - иначе.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304380
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinТоесть 4 байта. И с ними делается XOR?
Забудьте про xor. Сложение по модулю 2 32 - это обычное целочисленное сложение с игнорированием переполнения. Скажем, примерно так:

Код: plaintext
1.
2.
3.
 function  AddModulo32 ( a, b : integer ) : integer ; register ; assembler ;
 asm 
  add eax, ebx
 end  ;

(набрано в форуме, так что не буду клясться в отсутствии погрешностей)
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304390
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЗабудьте про xor. Сложение по модулю 2 32 - это обычное целочисленное сложение с игнорированием переполнения. Скажем, примерно так:

Простите, туго соображаю.
Тоесть мы складываем (для примера), 4 и 9 и получаем 3? Пример для десятичной системы. А модуль, соответственно, 10.

ЗЫ: блин, как бы это ещё на жаве написать...
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304435
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите, вот так можно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
//mod  32  for a and b
i = a * b
if i <  2  32 {
return i
}
else{
return i -  2  32 
}
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304451
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проще так написать

Код: plaintext
1.
2.
3.
4.
public int SumModuleN(int a,int b,int N)
{
   return (a+b)%N;
}

Такие штуки частенько используют в криптографии. Только в качестве N берут числа равные 2^N-1.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304469
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Такие штуки частенько используют в криптографии. Только в качестве N берут числа равные 2^N-1.
Я как раз крптографией и озадачился. Хочу реализовать библиотеку для ГОСТ 28147-89 на Пайтоне. Если получтся потом напишу ещё и на Жаве.

А то не понравилось мне, что в пайтоне ис за американских законов в отношении криптостойких алгоритмов действуют неприятные законы и в пайтоне нет библиотеки вроде жавовской javax.crypto, а код самой javax.crypto закрыт. Есть ведь хороший отечественный стандарт, который вполне открыт, да ещё и более стойкий чем DES.

Но мне знаний в области математики не хватает. Нашол статью с пояснением алгоритма. Но понятно всё равно не всё. Надеюсь здесь мне помогут.

ЗЫ: если осилю и напишу когданибудь, то код будет открыт. GPL.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304470
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Такие штуки частенько используют в криптографии. Только в качестве N берут числа равные 2^N-1.
модуль 32 это 2 32 -1?
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304478
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton Только в качестве N берут числа равные 2^N-1.

Только в качестве N берут числа равные 2^m-1 ?
если ниче не путаю, то зачемто еще и m надо простым числом брать.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304485
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarin
Хочу реализовать библиотеку для ГОСТ 28147-89 на Пайтоне. Если получтся потом напишу ещё и на Жаве.


А вы уверены, что никто до вас не реализовывал ГОСТ 28147-89 ? На мой взгляд - это довольно популярная задачка.

Почитайте книгу Джима Яворского. Я не уверен, что он упоминает на этот алгоритм, но в книге есть много ссылок на открытые библиотеки криптографии для Java. Возможно, ГОСТ где-нибудь да проскочит.


А то не понравилось мне, что в пайтоне ис за американских законов в отношении криптостойких алгоритмов действуют неприятные законы и в пайтоне нет библиотеки вроде жавовской javax.crypto, а код самой javax.crypto закрыт. Есть ведь хороший отечественный стандарт, который вполне открыт, да ещё и более стойкий чем DES.


Существует мнение, что DES устарел. Приведу цитату одного известного криптографа.

... DES больше не выдерживает проверки на профпригодность. Длина его ключа шифрования не отвечает современным требованиям. В мире совершено несколько успешных попыток определить ключ DES путем простого перебора вариантов...


Насчет ГОСТ-а. Не знаю. Надо почитать сравнительные характеристики.

А может вам лучше обратить внимание на настоящих "монстров", таких как AES, Twofish, Serpent.

Ваш покорный слуга использует AES-256bit в режиме CBC для шифрования бэкапов баз данных, перед тем, как залить их на ленточку стриммера.

А может быть они (монстры) уже в Питоне имеют свои реализации? Тогда и не стоит заморачиватся ИМХО.

Sarin
модуль 32 это 232-1?


Нет. Это я в качестве примера привел. Просто я хотел акцентировать внимание на том, что в качестве основания сложения (да и умножения, логарифмирования и проч.) во многих крипто-системах берут "простые числа", а иногда вдобавок еще и обладающие разными свойствами (типа чисел Мерсенна).
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304499
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А вы уверены, что никто до вас не реализовывал ГОСТ 28147-89 ? На мой взгляд - это довольно популярная задачка.

Почитайте книгу Джима Яворского. Я не уверен, что он упоминает на этот алгоритм, но в книге есть много ссылок на открытые библиотеки криптографии для Java. Возможно, ГОСТ где-нибудь да проскочит.
Может быть и так. Моя цель на Жава, а пайтон. Жава не бедна на криптографию. Библиотеку для Жавы я хотел написать, скажем так, для популяризации. Чтоб была совместимость.

Задача, может и популярная, но мне она показалась достаточно интересной. Достаточно простой, а главное, её решение может принести кому-то пользу.

mayton
Существует мнение, что DES устарел. Приведу цитату одного известного криптографа.

Вроде гост более стоек.
mayton
Насчет ГОСТ-а. Не знаю. Надо почитать сравнительные характеристики.

В госте ключь - 256 бит и таблица перестановок не стандартизована. Перебирать ключь в 256 бит, думаю, пока компьютерам не под силу. А если ещё и таблица перестановок секретна...
mayton
А может вам лучше обратить внимание на настоящих "монстров", таких как AES, Twofish, Serpent.

Ваш покорный слуга использует AES-256bit в режиме CBC для шифрования бэкапов баз данных, перед тем, как залить их на ленточку стриммера.

Ну, с чегото надо же начинать:)
mayton
А может быть они (монстры) уже в Питоне имеют свои реализации? Тогда и не стоит заморачиватся ИМХО.

Может и имеют. Но в стандартной библиотеке ничего пригодного для шифрования я не нашел. А я замахиваюсь на то, что если напишу, то попрошу включить в стандартную библиотеку следующей версии. Именно для этого и нужна Жава. Чтобы была совместимость. В идеале ещё хочется написать библиотеку на Си.

Раньше в пайтоне была мегатулза для шифрования. rotor Реализовала алгоритм Энигмы

Её убрали от греха подальше.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304557
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinТоесть мы складываем (для примера), 4 и 9 и получаем 3? Пример для десятичной системы.
Да.

SarinЗЫ: блин, как бы это ещё на жаве написать...
Лучше через and $FFFFFFFF (не помню, есть ли в яве побитовые операции, но вроде должны быть). А то еще будет считать остаток от деления напрямую.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304559
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinСкажите, вот так можно:
Если есть уверенность, что a*b будут меньше 2 33 , то можно. Но я бы не стал на это надеяться.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304607
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Если есть уверенность, что a*b будут меньше 2 33 , то можно. Но я бы не стал на это надеяться.
a и b имеют фиксированную длину.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34304611
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Sarin

А какой процент библиотек Питона, написан на самом Питоне? Меня интересует, насколько змей производителен в плане низкоуровневых вычислений. Ведь не секрет, что криптография довольно плотно подгружает вычислительную подсистему ( CPU ). Не будет-ли интерпретатор "бутылочным горлом" в вашем проекте? В этом случае, вам желательно будет брать исходники ГОСТ-а на C/C++, компилировать и внедрять их через механизм использования external библиотек, а в Питоне - прописывать интерфейс-переходник.

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

А какой процент библиотек Питона, написан на самом Питоне? Меня интересует, насколько змей производителен в плане низкоуровневых вычислений. Ведь не секрет, что криптография довольно плотно подгружает вычислительную подсистему ( CPU ). Не будет-ли интерпретатор "бутылочным горлом" в вашем проекте? В этом случае, вам желательно будет брать исходники ГОСТ-а на C/C++, компилировать и внедрять их через механизм использования external библиотек, а в Питоне - прописывать интерфейс-переходник.

Вы думали о таком сценарии?
Думал. Многое в питоне написано на сях. Интерпретатор действительно не шибко быстр (хотя в последних версиях многого добились в плане улучшения). В любом случае: сначала я буду писать на питоне. Чтобы почувствовать алгоритм кончиками пальцев. Потом можно переписать на сях. Мне интересно самому реализовать алгоритм

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

Код: plaintext
ROLLBACK;
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #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
Что такое сложение по модулю?
    #34308584
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chiiКонтрольная сумма тоде должна быть по ГОСТу. Фактически, имитовставка - это и есть нечто вроде контрольной суммы
Я задал этот вопрос в соседнем топике.

Но не дороговата ли плата за такую "контрольную сумму"? В два раза увеличится объём данных и в полтора минимум (по моим прикидкам) время шифровки/дешифровки.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34310101
Фотография chii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, наконец-то добралась до своих Favorites и выкладываю ссылки по ГОСТ:
У Андрея Винокурова давно на страничке пылятся вот эти реализации (в разделе "что скачать").

http://www.enlight.ru/crypto/frame.htm
Там же, кстати, есть
1) его статья "Алгоритм шифрования ГОСТ 28147-89, его использование и реализация для компьютеров платформы Intel x86";
2) утилитка есть для отображения внутреннего состояния регистров реализации ГОСТа, полезная при отладке своих реализаций.

Там, в частности, приводится такая ссылочка на реализации ГОСТ на C и PERL.
http://www.vipul.net/gost/
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34310694
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chiiВот, наконец-то добралась до своих Favorites и выкладываю ссылки по ГОСТ:
У Андрея Винокурова давно на страничке пылятся вот эти реализации (в разделе "что скачать").

http://www.enlight.ru/crypto/frame.htm
Там же, кстати, есть
1) его статья "Алгоритм шифрования ГОСТ 28147-89, его использование и реализация для компьютеров платформы Intel x86";
2) утилитка есть для отображения внутреннего состояния регистров реализации ГОСТа, полезная при отладке своих реализаций.

Там, в частности, приводится такая ссылочка на реализации ГОСТ на C и PERL.
http://www.vipul.net/gost/
Спасибо. Я как раз по этой статье и пишу:)
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34310696
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мнебы сам ГОСТ найти. Не охота деньги за него платить. Неужели его в Инэте нет?

Код: plaintext
ROLLBACK;
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34311464
Фотография chii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле, официальный документ?
Посмотри здесь
http://www.networkdoc.ru/doc/gost.html
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34311993
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chiiВ смысле, официальный документ?
Посмотри здесь
http://www.networkdoc.ru/doc/gost.html
Да. Официальный документ.

Нет предела моей печали. Там где ты указала есть и этот ГОСТ и ГОСТ на хэш-функцию. Но они обрезаны. Только первые две страницы
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34312216
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Sarin - почитай RFC4490 - может будет полезно
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34312376
Фотография chii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот это подойдет?
http://forall.ru-board.com/lynx/netarchive/gost/gost.html


Модератор:
два слеша перед ссылкой
http://forall.ru-board.com/lynx/netarchive/gost/gost.html
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34313125
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chiiА вот это подойдет?
http://forall.ru-board.com/lynx/netarchive/gost/gost.html
Спасибо. Похоже на то. Но, боюсь, что кое чего там не описано.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34313200
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил2 Sarin - почитай RFC4490 - может будет полезно
Почитаем. Спасибо.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34313543
Фотография chii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarin chiiА вот это подойдет?
http://forall.ru-board.com/lynx/netarchive/gost/gost.html
Спасибо. Похоже на то. Но, боюсь, что кое чего там не описано.
Чего ж тебе еще надо? Вот это уж точно официальный стандарт...
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34314232
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chiiЧего ж тебе еще надо? Вот это уж точно официальный стандарт...
Этот текст занимает 12 страниц. Официальный стандарт - 26.
Официальный стандарт начинается с определений.
Ьог знает, что ещё в этом тексте поотрезали.

Но мне уже всё равно. На работе появилось задание. Я не скоро теперь вернусь к криптографии
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34314934
Фотография chii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эх, все бы мы могли стать великими криптографами, если бы ни работа
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34316553
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chiiЭх, все бы мы могли стать великими криптографами, если бы ни работа
А ты криптографией занимаешься?
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34316770
Фотография chii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarin chiiЭх, все бы мы могли стать великими криптографами, если бы ни работа
А ты криптографией занимаешься?
Типа, это моя специальность )))
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34317216
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chiiТипа, это моя специальность )))
А можешь объяснить, зачем нужно в ГОСТе столько режимов шифрования?
Ну простая вставка - понятно. А вот зачем нужно два режима гаммирования? Чем они отличаются? Не в плане алгоритма, а в плане применения.

У какого выше криптостойкость?

По моим наблюдениям гаммирование с обратной связью выполняется чуть быстрее простого гаммирования.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34318041
Фотография chii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если ты посмотршиь, в том же DES аж 4 режима шифрования, так что ГОСТ - не уникум. А прикол весь в том, что все режима ГОСТа - как бы "атомарные", и процесс шифрования некоторого текста может включать как 1 режим, так и несколько сразу, в зависимости от требований к стойкости (или к скорости шифрования).
К тому же, в РФ ГОСТ - единственный стандарт именно ШИФРОВАНИЯ (не ЭЦП и хеширования), а на практике необходимы стандарты как на блочные, так и на поточные шифры (те, гаммирование). Поэтому ГОСТ - это как бы "все в одном".
С точки зрения криптостойкости режим с обратной связью является более предпочтительным, так как позволяет уменьшить зависимость шифрованного текста от открытого (т.н. энтропию).
То есть, при нулевой энтропии идентичные участки открытого текста всегда переходят в идентичные участки шифртекста (как в шифре простой замены), с увеличением энтропии одни и те же участки открытого текста могут переходить в различные участки шифртекста. Это заметно повышает криптостойкость.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34318819
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже я неправильно задал вопрос. С простой заменой всё понятно. ГОСТ прямо запрещает её использовать для всего, кроме ключевой информации (в ней самой энтропия должна быть высокой).

Но есть два режима гаммирования. Вопрос был про них. В обоих режимах последующий блок шифротекста всегда отличается от предыдущего. Но в режиме гаммирования с обратной связью он зависит от предыдущего блока шифротекста, а в режиме обычного гаммирования от гаммы для предыдущего блока.

В чём практическое различие гаммирования и гаммирования с обратной связью?

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

Код: plaintext
ROLLBACK;
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34322746
Фотография chii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть только те реализации, ссылки на которые я тебе давала.
Попробую еще раз ответить на твой вопрос:
1. На стойкость шифра гаммирование с обр связью (по сравнению с обычным гаммированием) никак не влияет.
2. При шифровании избыточных текстов гаммирование с обр связью позволяет повысить вероятность обнаружения умышленных или случайных искажений, внесенных в шифртекст:
Если в режиме обычного гаммирования изменения в определенных битах шифртекста влияют только на соответствующие биты открытого текста, то в режиме гаммирования с обратной связью при расшифровании блока данных, блок открытых
данных зависит от соответствующего и предыдущего блоков зашифрованных данных. Поэтому, если внести искажения в зашифрованный блок, то после расшифрования искаженными окажутся два блока открытых данных – соответствующий и следующий за ним, причем искажения в первом случае будут носить тот же характер, что и в режиме гаммирования, а во втором случае – как в режиме простой замены. Т.е., в соответствующем блоке открытых данных искаженными окажутся те же самые биты, что и в блоке шифрованных данных, а в следующем блоке открытых данных все биты независимо друг от друга с вероятностью 1/2 изменят свои значения.
При расшифровании в режиме простой замены соответствующий блок открытых данных оказывается искаженным непредсказуемым образом, а при расшифровании блока в режиме гаммирования изменения предсказуемы. В режиме гаммирования с обратной связью искаженными оказываются два блока, один предсказуемым, а другой непредсказуемым образом.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34322874
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chiiпри расшифровании блока в режиме гаммирования изменения предсказуемы. В режиме гаммирования с обратной связью искаженными оказываются два блока, один предсказуемым, а другой непредсказуемым образом.

А что считается блоком при гаммировании ?
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34323170
Фотография chii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГОСТ же по своей природе блочный шифр... 64 бита - блок. Хотя для гаммирования это не принципиально.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34323271
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chiiСпасибо большое.
...
Рейтинг: 0 / 0
Что такое сложение по модулю?
    #34323274
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)А что считается блоком при гаммировании ?
Все блоки кроме последнего - 64 бита. Последний - сколько останется.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Что такое сложение по модулю?
    #37700938
Кitty_Loves
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я долго читала все вышесказанное, но мб из-за тупости не могла найти ответ на поставленный вопрос: Сложение по модулю 2^32... и дооолго рыская и интернете, и во все возможных источниках нашла ответ для себя тут: http://www.al.cs.msu.su/static/classes/NumberRepresent.pdf это сслыка на PDFфайл, там 9 страниц, и где-то на 5 странице и ниже становится все ясно.. попробую конечно своими словами сказать, для ленивых вроде меня (надеюсь кому надо -поймет:) )
A [+] B = A + B, если A + B < 2^32,
A [+] B = A + B - 2^32, если A + B >= 2^32. (это правила [+] вот так обозначается операция "сложение по модулю 2^32")

суть в том, что если при обычном ксоре (XOR) или сложению по модулю два, происходит случай когда А [+] В >= 2^k, где k- это число разрядов в двоичном коде, то выполняется добавление разряда в самое начало строки: например (k=3) 6+2 (Dec)=110+010(Bin) = (переполнение, т.к. k=3 а разряд увеличивается) 1000(Bin) = 8 (а k=3 максимальное число это 7) ... а обычное сложение по модулю два (+) не подразумевает увеличение разряда... (DES например я так понимаю, для просоты чтобы строка не привышала 32 бита, 48 бит, и в итоге 64 - сделали обычное Ислючающее ИЛИ, а вот в ГОСТе рещили усложнить- пока я не знаю куда девать лишний разряд если таковой появится... кто-то говорит что в ГОСТе надо применять (2^32)-1 или как-то так, но чаще я находила 2^32... но это уже драгая история).. буду рада если кому-то это оказалось полезно...
...
Рейтинг: 0 / 0
75 сообщений из 75, показаны все 3 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Что такое сложение по модулю?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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