Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/287: Рейтинг темы: голосов - 287, средняя оценка - 4.98
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 3

Шифрование RSA (нужен код)

03.04.2012, 12:50. Показов 57272. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень нужна помощь в написании программы для шифрования с использованием алгоритма RSA.
Принимаются любые советы.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.04.2012, 12:50
Ответы с готовыми решениями:

RSA шифрование
Подскажите, пожалуйста, как использовать RSA шифрование и чтобы ключ можно было использовать в C# RSA

Не работает RSA шифрование с++
Всем доброго времени суток. Я реализовал RSA шифрование на с++, но программа неправильно расшифровывает сообщение. Пары {e, n} -...

Как написать шифрование RSA на python без import RSA
Нужнен код без использование RSA библиотеки. Буду блогодарен!

11
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
03.04.2012, 12:57
Лучший ответ Сообщение было отмечено как решение

Решение

http://ru.wikipedia.org/wiki/RSA
[del]
3
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.04.2012, 13:01
Алгоритм шифрования RSA
RSA на С++
1
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 3
03.04.2012, 13:02  [ТС]
Возникает 2 вопроса:1.Как алгоритм Евклида написать в виде кода. 2Мне нужно шифровать строку, значит символы надо перевести в числа. Как это сделать и какие библиотеки нужно использовать?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.04.2012, 13:09
Цитата Сообщение от Ignat9 Посмотреть сообщение
2 Мне нужно шифровать строку, значит символы надо перевести в числа. Как это сделать и какие библиотеки нужно использовать?
Это очень сложный и трудно решаемый вопрос, особенно, если не читать профильную литературу .
C++
1
2
AnsiString str = "123456789";
int i = StrToInt(str);
Добавлено через 2 минуты
если не лениться... Алгоритм Евклида

Добавлено через 43 секунды
Преобразование чисел в строку и обратно
1
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
03.04.2012, 15:53
Алгоритм RSA
то, что я когда то делал
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
03.04.2012, 19:15
Тут вроде выход с цикла нужно на вверх поднять тогда избавимся от проверки на ноль.
Давно писал.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//---------------------------------------------------------------------------
        // Решаем алгоритм Евклида
        while( true )
        {
                if( a[i] < m[i] )
                {
                        a[i + 1]        = m[i];
                        m[i + 1]        = a[i];
                        q[i]            = 0;
                }else
                {
                        a[i + 1] = m[i];
                        if( m[i] != 0 )
                        {
                                q[i]            = a[i] / m[i];
                                m[i + 1]        = a[i] - (q[i] * m[i]);
                        }
                }
                if( m[i] == 0 )
                {
                        break;
                }
                i++;
        }
//---------------------------------------------------------------------------
Вложения
Тип файла: rar Project1.rar (10.3 Кб, 560 просмотров)
0
 Аватар для nikitapel
37 / 37 / 6
Регистрация: 20.03.2011
Сообщений: 331
04.04.2012, 16:13
http://kastaneda.kiev.ua/crypto/rsa/encrypt.html
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
int modpow(x, e, n) {
 int r = 1;
  while( e>0 ) {
    if( (e%2)==1 ) { r = (r*x) % n; }
    e = e/2;
    x = (x * x) % n;
  }
  return r;
}
void main()
{
int x,e,n;
cout << "Введите сообщение которое хотите зашифровать/расшифровать (цифрами)\n";
cin >> x;
cout << "Введите экспоненту\n";
cin >> e;
cout << "Введите ключ\n";
cin >> n;
cout << modpow(x, e, n);
system("pause");
}
1
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
04.04.2012, 17:43
Как-то криво расшифровует.
Ввожу 1234, шифрует правильно, расшифровывает уже не то...
нормально зашифровало и расшифровало число 113 из 10 чисел.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
 
 
int p, q, e, n, d, msg, enc;
 
int gcd (int a, int b)
{
  int c = 0;
  while ( b != 0 )
  {
        c = a % b;
        a = b;
        b = c;
  }
  if ( a < 0 ) return -a; return a;
}
 
int keygen(int p, int q, int &e, int &n, int &d)
{
  int m, x;
  n = p * q;
  m = (p - 1) * (q - 1);
  for ( x = 2; x < m; x++ )
        if ( gcd(m, x) == 1 )
        {
                e = x;
                break;
        }
        if ( x == m )
        {
                return 0;
        }
  for ( x = 1; x; x++ )
        if ( ! ((e * x - 1) % m) )
        {
                d = x;
                break;
        }
        if ( e == d )
        {
                return 0;
        }
  Form1->Memo1->Clear();
  Form1->Memo1->Lines->Add("n = "+String(n));
  Form1->Memo1->Lines->Add("e = "+String(e));
  Form1->Memo1->Lines->Add("d = "+String(d));
  return 1;
}
 
int modpow(int x, int e, int n)
{
  int r = 1;
  while( e > 0 )
  {
        if( (e % 2) == 1 )
        {
                r = (r * x) % n;
        }
        e /= 2;
        x = (x * x) % n;
  }
  return r;
}
 
int encrypt(int msg) { return modpow(msg,e,n); }
int decrypt(int enc) { return modpow(enc,d,n); }
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if ( Edit1->Text != "" && Edit2->Text != "" )
  {
        p = Edit1->Text.ToInt();
        q = Edit2->Text.ToInt();
        keygen(p, q, e, n, d);
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  if ( Edit3->Text != "" )
  {
        //e = 11; n = 50927;
        msg = Edit3->Text.ToInt();
        Edit4->Text = String(encrypt(msg));
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
  if ( Edit4->Text != "" )
  {
        //d = 27491; n = 50927;
        enc = Edit4->Text.ToInt();
        Edit3->Text = String(decrypt(enc));
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
        if ( !isdigit(Key) && Key != VK_BACK) Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)
{
        if ( !isdigit(Key) && Key != VK_BACK) Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit3KeyPress(TObject *Sender, char &Key)
{
        if ( !isdigit(Key) && Key != VK_BACK) Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit4KeyPress(TObject *Sender, char &Key)
{
        if ( !isdigit(Key) && Key != VK_BACK) Key = 0;
}
//---------------------------------------------------------------------------
Миниатюры
Шифрование RSA (нужен код)   Шифрование RSA (нужен код)  
0
 Аватар для nikitapel
37 / 37 / 6
Регистрация: 20.03.2011
Сообщений: 331
04.04.2012, 17:54
QVO скорее всего числа выходят за предел integer.
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
04.04.2012, 17:57
Как-то не серьезно реализуете этот алгоритм. Если реализовывать, то полностью (с поддержкой больших ключей; поддержка не только чисел, но и сообщений).
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
04.04.2012, 18:07
nikitapel, прогнал в своей программе, ответ тот же (за пределы не выходит).
Объясните соль.
Миниатюры
Шифрование RSA (нужен код)   Шифрование RSA (нужен код)  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2012, 18:07
Помогаю со студенческими работами здесь

Как поменять результат шифрование \ Метод шифрование RSA
Здравствуйте! Прошу помощи! В просторах интернета нашла одну статью в которой реализован метод шифрования RSA. Решила его опробовать, но...

Шифрование RSA
Имеется 1 публичный ключ и текст. Нужно зашифровать текст по методу RSA Добавлено через 20 минут Пользовался RSACALC, но в потоке её...

RSA-шифрование
Написал программу в Delphi реализующую алгоритм Rsa- шифрования, производящую кодирование-декодирование текста. где-то ошибка, так как...

RSA шифрование
Здравствуйте, как реализовать RSA шифрование на php, сам пишу на C# и мне нужно чтобы то что было зашифровано на php, можно было бы...

rsa шифрование
нашел исходники- http://plagiata.net.ru/?p=140 но не разберусь. как присваивать свои ключи?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru