|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
|
ГОСТ 3410 / Работа с длинными числами01.10.2008, 12:20. Показов 18752. Ответов 75
Метки нет (Все метки)
Начал делать курсовик по реализации ЭЦП по ГОСТ 34.10 (и соответственно 34.11 и 28147
). В качестве среды разработки выбрал C++ Builder.Возник вопрос: Как работать с большими числами размером в 256,512,1024 бит? Они, ведь, ни в один тип данных не лезут (int только 32 бита). В контрольком примере дано число 5789604461865809771178549250434395392663 4992332820282019728792003956564821041. P.S Чужая реализация 3410-01 Но, есть сильное подозрение а то, что препода "кинули" - подсунили ему в место ГОСТ 3410-2001, забугорский ECDSA. Мой курсовик: Недостатки: 1) Результат проверки не совпадает с генерированой подписью. Проблема в математике. 2) Нет создания хэша функции по ГОСТ 3411 3) Нет вычисленя параметров ЭК. 4) Длительное время работы (прога не зависла - она считает)
0
|
|
| 01.10.2008, 12:20 | |
|
Ответы с готовыми решениями:
75
Работа с длинными числами Работа с длинными числами Работа с длинными числами |
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 01.10.2008, 13:23 | |
|
есть арифметика длинных чисел, почитай С. Оклов "Программирование в алгоритмах"
0
|
|
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
|
| 06.10.2008, 18:11 [ТС] | |
|
А нельзя просто выделить память под переменную в 256 бит?
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 06.10.2008, 18:14 | |
|
ну так в один бит ты как цифру записать собрался? глянь типы данных, там по-любому есть тип, который в себя вместит число, просто с помощью арифметики длинных числе можно реализовать быстрые алгоритмы для работы с такими числами
0
|
|
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
|
| 20.10.2008, 10:30 [ТС] | |
|
Нашел материал по работе с длинными числами - Щербаков, Домашев Прикладная криптография. Но, к сожалению не могу заставить работать хотя бы первый алгоритм сложения - не выполняется перенос разряда. В чем проблема?
http://slil.ru/26253252 - все о госте http://slil.ru/26253265 - не работающая прога http://slil.ru/26253351 - Щербаков, Домашев Прикладная криптография
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
||||||
| 20.10.2008, 10:41 | ||||||
|
сложение длинных чисел
0
|
||||||
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
||||||
| 20.10.2008, 19:32 [ТС] | ||||||
|
Объясните этот код:
0
|
||||||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 20.10.2008, 20:21 | |
|
(__int64) - это приведение типа, LoDigit(T) - возвращает младшие 4 байта
HiDigit(T) - старшие 4 байта, чар используется для того, чтобы был один байт... ну а вообще - алгоритм прост... иммитация сложения столбцом... только человек эффективнее использует элементы массива, в отличии от моего алгоритма... да и по-хорошему, ты бы мог и потрассировать алгоритм, тогда будет видно, что там и зачем делается
1
|
|
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
|
| 20.10.2008, 20:35 [ТС] | |
|
1) Спасибо
![]() 2) Как работает #define HiDigit(T) ((int)((T)>>m))? Сам понял, что число T помещается в поток, а ((int)((T)>>m)) что делает? За счет, чего помещается в старшие 4 байта. 3) Почему при сложении int a[]={2,2,9} и b[]={1,2,9} получается С[i]={3,4,18} т.е нет переноса. 4) Трассировку хорошо бы сделать, но не ясно как. В меню Run можно выполнить только команду Run, а по шагам нельзя.
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 20.10.2008, 21:31 | |
|
>> - это в данном случае сдвиг на 32 бита
ну так при выводе будет 1843... а переполнение - это когда число больше байта будет по идее...
0
|
|
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
|||||||||||
| 20.10.2008, 22:34 [ТС] | |||||||||||
|
Unit1_math.cpp
[Linker Error] Unresolved external 'Zero(int *, int)' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\BIN\3410_ARIFMET IKA\UNIT1_MATH.OBJ
0
|
|||||||||||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 21.10.2008, 10:45 | |
|
прототип Zero описан, даже есть вызов функции, ну а где же ее реализация-то?
0
|
|
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
|||||||||||
| 21.10.2008, 12:41 [ТС] | |||||||||||
|
Возникли еще вопросы. Как работают функции, ведь в них есть только передача параметров:
Добавлено через 3 минуты 7 секунд Второй вопрос. Unit1_math.h:
Как понял, проблемы с областью видимости функции zero. Что надо исправить?
0
|
|||||||||||
|
1 / 1 / 0
Регистрация: 21.10.2008
Сообщений: 25
|
|
| 21.10.2008, 12:43 | |
|
Я возможно не по теме, но все же. У меня аналогичный курсовик (Реализация ГОСТ 34.10-94).
Вопрос к IS, у тебя есть нормальный вариант этого ГОСТа? Просто все что я находил в интернете содержит ошибки, да и из текста становится понятно, что некоторые операции написаны неверно.
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 21.10.2008, 12:57 | |
|
*bkmz, вот бери его исходник и подгоняй под себя, а то на все готовенькое попасть - это же жутко скучно... а покой нам только снится
IS, где реализация функции zero? я что-то так и не нашел в твоем листинге...
0
|
|
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
|
| 21.10.2008, 12:59 [ТС] | |
|
*bkmz, Свой гост брал на http://protect.gost.ru/, но сейчас что-то глючит.
реализация описана http://slil.ru/26253351 - Щербаков, Домашев Прикладная криптография. Но, как видешь, пока не могу заставить работать арифметические операции. Может у тебя получится. Если заработает, то сообщи.
0
|
|
|
1 / 1 / 0
Регистрация: 21.10.2008
Сообщений: 25
|
||||
| 21.10.2008, 13:19 | ||||
0
|
||||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 21.10.2008, 13:28 | |
|
IS, блин, да что там непонятно, у тебя нет реализации функции зеро, просто ее прототип и вызов в теле программы... напиши реализацию этой функции и будет тебе счастье
*bkmz, просто тут слишком часто просят именно сырцы... вот и поэтому я так тебе ответил, ничего личного...
0
|
|
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
||||||
| 21.10.2008, 14:52 [ТС] | ||||||
|
WooDooMan, Извиняюсь, просто не заметил, что появилась вторая страница и я решил, что сообщение не отправилось.
Теперь к делу. Действительно, нет реализации - у авторов эта функция так и приводится без реализации, не ясно за чем. Реализацию добавил.
Вопросы: 1) Что должен делать макрос #define MaxDigit ((int)(-1));? 2) Как определить количество элементов в массиве?
0
|
||||||
|
1 / 1 / 0
Регистрация: 21.10.2008
Сообщений: 25
|
|
| 21.10.2008, 15:08 | |
|
WooDooMan, да ничего страшного, понимаю..
0
|
|
| 21.10.2008, 15:08 | |
|
Помогаю со студенческими работами здесь
20
Работа с длинными числами (Delphi 7) Функция с++ (работа с длинными числами - вывод результата в файл) Действия с длинными числами Сочетания с длинными числами Операции с длинными числами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|