19 / 19 / 6
Регистрация: 09.12.2010
Сообщений: 140
|
|
1 | |
Цифровая подпись13.04.2013, 13:35. Показов 2376. Ответов 3
Метки нет (Все метки)
Добрый день!
Реализую цифровую подпись на основе алгоритма RSA. Хеширование на основе алгоритма MD5. Результатом хеширования является очень большое число, н-р: 6ce809eacf90ba125b40fa4bd903962e. Согласно алгоритма RSA, создание подписи осуществляется так: s=y^c mod n, где у - хеш-функция (в моем случае:6ce809eacf90ba125b40fa4bd903 962e). Как осуществляются операции возведения в степень и остаток от целочисленного деления с таким большим числом? Программу пишу на c++, а в нем максимальное целое число приблизительно равно 18^18 (unsigned long long). Так же значение n образуется путем умножение очень больших чисел p и q, которые лежат в пределах от 10^75 до 10^100?
0
|
13.04.2013, 13:35 | |
Ответы с готовыми решениями:
3
Электронная цифровая подпись Электронная подпись Электронная подпись RSA Слепая подпись Чаума |
77 / 58 / 8
Регистрация: 10.03.2011
Сообщений: 354
|
|
13.04.2013, 14:20 | 2 |
А разве нет встроенных библиотек? для этой задачи(Я ПРО САМ RSA)? Уверен что есть.
0
|
19 / 19 / 6
Регистрация: 09.12.2010
Сообщений: 140
|
|
13.04.2013, 14:29 [ТС] | 3 |
Да в том то и дело, что мне необходимо без использования сторонних библиотек все реализовать - это курсовой проект.
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
16.04.2013, 00:10 | 4 |
Вопрос довольно объёмный. Что касается самого возведения в степень, то его можно представить в виде последовательности умножений и возведений в квадрат используя двоичное представление степени.
Например, надо возвести x в степень 71: тогда А чтобы число в процессе возведения в степень не росло без меры (ведь результат будет всё-равно меньше модуля) можно воспользоваться следующим известным соотношением: То есть после каждого умножения или возведения в квадрат промежуточный результат надо приводить по модулю. Сами длинные числа можно реализовать в виде массива и хранить как отдельные разряды в n-ичной записи числа. В качестве основания можно взять 10 и получить обычное десятичное представление, но для криптографических целей удобнее будет какая-нибудь степень двойки, например число 16 или 256, или даже 65536. Умножение реализуется в виде алгоритма перемножения "в столбик". Деление (для нахождения остатка) будет выполняться "уголком". Всё это не слишком эффективно, но зато относительно просто реализуется.
1
|
16.04.2013, 00:10 | |
16.04.2013, 00:10 | |
Помогаю со студенческими работами здесь
4
Числовая подпись в шифре простой замены Code sign \ цифровая подпись приложения Цифровая подпись Цифровая подпись Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |