|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
|
ГОСТ 3410 / Работа с длинными числами01.10.2008, 12:20. Показов 19333. Ответов 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
|
|
| 24.10.2008, 09:53 | |
|
ну это смотря какой массив... есть разные способы, можно свой указатель держать, чтобы указывал на последний элемент, а так - каким размер поставил, такой и размер... если юзаешь классы билдера, то во всех коллекциях у них есть свой указатель на кол-во...
0
|
|
|
1 / 1 / 0
Регистрация: 21.10.2008
Сообщений: 25
|
||||||
| 24.10.2008, 15:46 | ||||||
|
Решал и решаю эту проблему при помощи векторов, очень удобно.
IS, ты будешь реализовывать хеш функцию по госту или отсебятину делать? мне просто препод. сказал что это не обязательно(мол это уже совсем другой курсовик, можно обойтись обычным xor'ом всего файла), хотя в госте написано что хеш должен быть по госту...
0
|
||||||
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
|||
| 24.10.2008, 16:28 [ТС] | |||
|
0
|
|||
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
||||||
| 27.10.2008, 12:47 [ТС] | ||||||
|
*bkmz, Как успехи?
WooDooMan, Есть вопрос. Надо создать массив из AnsiString и, например, обратиться к второй букве из третьего элемента массива. Как это реализовать? С эти разобрался:
0
|
||||||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 27.10.2008, 13:10 | |
|
используй TStringList, ну а к буквам обращаться как и в массиве чаров, только учти тот факт, что у AnsiString нумерация идет c 1, это след дельфи в билдере
0
|
|
|
1 / 1 / 0
Регистрация: 21.10.2008
Сообщений: 25
|
|
| 27.10.2008, 15:40 | |
|
IS, Все работает, осталось только доделать интерфейс и написать пояснительную записку. Хеш реализовывать не стал, но в теории его прикрепить можно будет.
0
|
|
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
|
| 28.10.2008, 16:29 [ТС] | |
|
*bkmz, не помнишь сложение по модулю 2^32 это поразрядное xor или я ошибаюсь?
Добавлено через 4 часа 58 минут 23 секунды *bkmz, Выложишь, потом, свой exe-шник, а то интересно глянуть, что у тебя получилось. Только, где-нибудь сделай крупную надпись "Разработано bkmz", чтобы копирлефт не произошел. И еще, вместо хэша ты брал любое число длиною x бит?
0
|
|
|
1 / 1 / 0
Регистрация: 21.10.2008
Сообщений: 25
|
|
| 31.10.2008, 19:41 | |
|
Стоит начать отмечать день рождения, как наступает послезавтра...
IS, под сложением по модулю 2^32 я понимаю, что сумма будет не больше 2^32. мб ошибаюсь но если судить по логике, то так должно быть. В качестве хеша я брал упрощенный хеш файла. То есть считываю 32 байта (256 бит) из файла и побитово делаю xor со следующими 32 байтами. Файл и инструкция как запустить - в личке)
0
|
|
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
||||||
| 06.11.2008, 20:30 [ТС] | ||||||
|
Вот нашел класс http://www.imach.uran.ru/cbignum/indexr.html для работы с длинными числами, но не знаю как его подключить. Что надо сделать, чтобы им пользоваться в билдере?
Добавлено через 1 час 7 минут 8 секунд *bkmz, Проверил. Обнануть стандартными способами не смог (правда, есть идея с потоками в NTFS - может так обману). Что приятно удивило, так это скорость работы - думал, почту прочесть успею пока идет обработка, а нет, раз и готово. ![]() P.S Оценка какая? Вас, кстати, каким языкам программирования обучали? У нас, только паскаль и ассемблер .Добавлено через 8 часов 12 минут 22 секунды Не создается масcив:
Второй вопрос. Как скопировать из строки S1 в S2 6,7,8 символы? Добавлено через 1 час 33 минуты 0 секунд 1) Как сделать, чтобы функция возвращала массив? 2) Можно ли, вывести весь массив без использования цикла?
0
|
||||||
|
1 / 1 / 0
Регистрация: 21.10.2008
Сообщений: 25
|
||||||
| 06.11.2008, 20:48 | ||||||
|
IS, оценки еще нет, так как надо все это еще оформить и дождаться пока приедет преподаватель.
На первом курсе давали С++, на втором был такой предмет, как методы программирования, там была Java, оч понравилась) Знаю чтоб передать в фунцию массив можно передать указатель на его нулевой элемент, думаю обратно то же самое. Динамическое выделение памяти под массив:
0
|
||||||
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
|
| 07.11.2008, 17:50 [ТС] | |
|
*bkmz, С массивами разобрался.
Кстати, а как у Вас с мат. частью и кадрами? У нас, например, есть предмет Программно-Аппаратные Средства Обеспечения ИБ (ПАСОИБ), так вот, программую защиту вообще не рассматриваем т.к знания препода находятся ниже уровня usera. Зато, аппаратные более-менее нормально. Поиграли с высокоскоростным приемником Скорпион (поиск жучков), ставили подавляли некотрые частоты, сейчас играем с Стеной-105, предназначенной для защиты от утечки по вибро и вибро-акустическим каналам. Обещали привести индикатор поля "БЛИК-М" предназначен для обнаружения источников радиоизлучения. А, на теорию (Фурье, Котельников и Ко) похоже забили. Добавлено через 20 часов 20 минут 18 секунд Как научить CSinEdit увеличивать и уменьшать значение В 10 раз?
0
|
|
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
||||||
| 10.11.2008, 09:25 [ТС] | ||||||
|
WooDooMan, вот фрагмет кода для умножения
Osn=10000; n=2000000; i=1 A[i]=3274 A[i]*n=-2041934592 BufInt64=-2041934592 C1[i]=0 C1[i]=-4592 перенос=-204193 i=2 A[i]=58 A[i]*n=116000000 BufInt64=115795807 C1[i]=-204193 C1[i]=5807 перенос=11579 i=3 A[i]=1284 A[i]*n=-1726967296 BufInt64=-1726955717 C1[i]=11579 C1[i]=-5717 перенос=-172695 Как я понимаю выражение A[i]*n+C1[i] не лезет в int,поэтому я ввел буфер размерностью 64 бита. Но почему-то и туда не лезет. Где ошибка? Как научить CSinEdit увеличивать и уменьшать значение В 10 раз?
0
|
||||||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 10.11.2008, 09:45 | |
|
да вообще ты должен был всего лишь попровить код сложения, там путем смещений получают числа, которые вмещаются в int, особо не изгаляйся, а просто код подправь сложения... потому что отрицательные числа при умножении двух положительных - это признак переполнения, значит числа длиннее 8 байт... следовательно, нужно обрезать, у тебя этот хитрый способ есть между прочим
0
|
|
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
|||||||||||
| 11.11.2008, 12:05 [ТС] | |||||||||||
|
WooDooMan, код исправил
Добавлено через 21 час 50 минут 6 секунд WooDooMan, есть вопрос. 1) Как научить CSinEdit увеличивать и уменьшать значение В 10 раз? (долго мучался, но так и не сделал, поэтому интересно). 2) Как можно сделать журнал (Log) подобным коду XML т.е группировать по общему родителю. Поясню на примере.
3) чем отличаются методы RichEdit1->Lines->Add() от RichEdit1->Lines->Append() Добавлено через 22 минуты 37 секунд 4) Как можно настроить для AnsiString формат вывода (чтобы все было ровненько)?
0
|
|||||||||||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 11.11.2008, 12:06 | |
|
1) не знаю, я с таким компонентом не игрался...
2) ну логи как поведешь, так и будут, пиши теги - будет хмл, я логирование когда и в html вел, но оно того не стоит, логи - это же отладочная инфа, зачем изголяться... 3) отличие простое, аппенд не возращает никакого значения, в отличие от адд
0
|
|
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
|
| 11.11.2008, 17:45 [ТС] | |
|
Сделал, пока калькулятор для длинных чисел. Желающие, могу протестировать его. Просьба, сообщать о ошибках и неверных результатах, указав значения аргументов и выполняемую операцию.
http://slil.ru/26322490
0
|
|
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
|||||||||||
| 16.11.2008, 10:36 [ТС] | |||||||||||
|
WooDooMan, кажись приступаю к реализации самого госта. Вопрос. Как можно использовать функции, написанные для калькулятора, в другом проекте? Надо учесть, что у меня при выполнении какой-либо операции ведется лог. Например:
Или, вообще, проще добавить к калькулятору новую форму и работать в ней? http://slil.ru/26335252 - проект калькулятора. Добавлено через 18 часов 49 минут 26 секунд Решил добавить просто новую форму, но не могу вызвать ни фнкциии ни переменные определеные как public. Unit1.h
P.S В Unit4310.cpp написал #include "Unit1.h"
0
|
|||||||||||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 17.11.2008, 09:13 | |
|
да вообще необязательно все формами лепить, ты же можешь и как набор функций прилепить к проекту файл или как класс, это уже как удобно, а еще полезно к логам микронастройки - вести их вообще или нет, тогда все просто, в инициализации класса передал, что лог не вести и все нормально, прилепил окно журналирования, значит укажи вести лог и тоже будет тип-топ...
0
|
|
|
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
|
|||||||||||||
| 17.11.2008, 14:15 [ТС] | |||||||||||||
|
WooDooMan, можно более подробно? Куда нажимать и что где надо писать.
Второе. Не могу понять. Есть код сложения.
P.S Если надо, то я могу скинуть проект.
0
|
|||||||||||||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 17.11.2008, 14:47 | |
|
погоди, ну так на глаз - у тебя же цикл с 1 начинается, а вообще трассировать надо, мутноватый у тебя лог, если честно
0
|
|
| 17.11.2008, 14:47 | |
|
Работа с длинными числами (Delphi 7) Функция с++ (работа с длинными числами - вывод результата в файл) Действия с длинными числами Сочетания с длинными числами Операции с длинными числами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|