Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Firewall-RSA-шифрование  (Прочитано 15288 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
uits
Гость
« : 06-05-2010 00:41 » 

Здравствуйте. Подскажите пожалуйста, как можно написать функцию, чтобы она возводила в степень большие числа? Это нужно для шифрования методом RSA. Например ,29^13 - и результат уже выходит за границк диапазона __int64...


Стандартная функция pow не подходит. Хотя может быть дело не в самописной функции... А как диапазон больше сделать?
« Последнее редактирование: 06-05-2010 05:03 от RXL » Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 06-05-2010 03:13 » 

uits, тебе нужна библиотека больших чисел. Например, GMP. Поищи по форуму - подобная тема минимум дважды появлялась.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
uits
Гость
« Ответ #2 : 06-05-2010 04:13 » 

Хай. Разрабатываю межсетевой экран на c++. Нужно чтобы он, отправляя пакет, данные зашифровывал алгоритмом RSA. Вопрос: как эти данные разбить на блоки (причем log в режиме ядра не пойдет) и представить в виде чисел из диапазона (0, n-1), которые потом можно будет в степень возвести? Там ведь будут только 0 и 1... Заранее спасибо.
Записан
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 06-05-2010 04:50 » 

uits, ты хоть сам понимаешь то что ты написал?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 06-05-2010 05:03 » 

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

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
uits
Гость
« Ответ #5 : 06-05-2010 05:51 » 

ок. так и создана одна, а в ней 2 вопроса. ладно, я тут впервые, поэтому приношу извинения, если что-то было сделано мной не по правилам. т.е. мне где 2 вопрос задать?
p.s. по-моему все конкретно.  а что не понятного?
Записан
uits
Гость
« Ответ #6 : 06-05-2010 05:52 » 

для Serg79: а что не так-то? Скромно так...
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 06-05-2010 05:53 » 

uits, я объединил твои две темы в одну, а третью - дублированную, удалил. Прочти правила нашего форума, чтобы не повторять ошибок: https://forum.shelek.ru/index.php?action=vu-rules#post_rules
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
uits
Гость
« Ответ #8 : 06-05-2010 05:55 » 

хорошо. ясно. еще раз извиняюсь.
Записан
uits
Гость
« Ответ #9 : 06-05-2010 05:57 » 

Ну так может кто-нибудь знает, как сообщение разбить на блоки и представить в виде число?
Записан
resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 06-05-2010 06:02 » 

Мда. Действительно лажа полнейшая. Может попробуешь поподробнее

ты хотя бы знаешь что понимается под словосочетанием межсетевой экран?

Цитата: uits
причем log в режиме ядра не пойдет

о каком log'е идет речь?
c++ в ядре это по твоему нормально?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 06-05-2010 06:03 » 

uits, извини, но ты говоришь полную чепуху и по этому тебя никто не понимает и не отвечают на твои вопросы. Попробуй обдумать вопрос и выразить его в понятной форме!
Попробуй "плясать от печки" - начать с основ задачи, без углубления в дебри.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 06-05-2010 06:04 » 

Допустим, есть число 4893, а n = 12. То есть, мы можем кодировать числа от 0 до 11.
Навскидку вижу 2 варианта:
1. Вариант грубый (с избыточностью): брать наибольшее k бит такое, что 2^k < n. В случае с 12, это октет - 3 бита. То, что числа 8..11 встречаться в открытом тексте не будут - увы, избыточность Улыбаюсь 4893->011435, кодируем 5 "блоков", (1, 1, 4, 3, 5).
2. Вариант тонкий: переводить открытый текст в 12-ричный код. И кодировать символы этого кода.
« Последнее редактирование: 06-05-2010 06:06 от Вад » Записан
uits
Гость
« Ответ #13 : 06-05-2010 06:23 » 

межсетевой экран на C++ - такое задание. log - это в когда в алгоритме RSA нужно разбить сообщение на K = log2(n) бит. Каждый из этих блоков может быть представлен в виде числа M(i)=0,1,2..., n-1. В DDK логарифмы не используются. Вопрос: как разделить сообщение и представить его в виде числа, чтобы потом возвести в степень e?
Записан
uits
Гость
« Ответ #14 : 06-05-2010 06:34 » 

Т.е. нужно разбить сообщение на блоки, каждый из которых может быть представлен в виде числа M(i)=0,1,2..., n-1. Чтобы потом зашифровать по формуле C(i)=(M(I)^e)mod n.
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #15 : 06-05-2010 07:10 » new

log - это в когда в алгоритме RSA нужно разбить сообщение на K = log2(n) бит. Каждый из этих блоков может быть представлен в виде числа M(i)=0,1,2..., n-1.
Ну вот, как раз первый вариант, про который я говорил. Так а зачем логарифм? Значением логарифма в данном случае будет порядковый номер старшего значащего бита числа n. То есть, если n, скажем, равно 18, то старший бит - 4. log2(18)=~4
Записан
uits
Гость
« Ответ #16 : 16-05-2010 02:16 » 

Спасибо. И еще вопрос. Реализована программа для шифрования символов, введенных в edit. Необходимо сделать так: взять файл любого формата (включая web-страницу), закодировать его и сохранить. Соответственно, затем взять этот закодированный файл, расшифровать и также передать. Как это сделать? Помогите, пожалуйста!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines