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

Реализация шифра Бэкона

05.05.2014, 22:11. Показов 4096. Ответов 9
Метки нет (Все метки)

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

Реализация шифра Цезаря
#include <vcl.h> #pragma hdrstop #include <math.h> #include "Unit1.h" ...

Реализация шифра "Атбаш"
пытаюсь написать программу для реализации Атбаша по логике и по самой формуле Атбаша, получается такой код int T; AnsiString buff =...

Реализация шифра Гронсфельда.
Реализация шифра Гронсфельда. Реализация модифицированного шифра Гронсфельда.

9
 Аватар для prog63
2 / 2 / 1
Регистрация: 24.11.2013
Сообщений: 77
05.05.2014, 22:22
Цитата Сообщение от Vitali Посмотреть сообщение
он сразу же шифруется
процедуру шифрования пишете в обработчик EditChange компонента Edit.
Он будет вызван при любом изменении в поле
0
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 4
05.05.2014, 22:56  [ТС]
Спасибо, это понятно. Но я с самим кодом разобраться не могу, если можете, помогите, пожалуйста. У меня есть код на Паскале, но я там ни бум-бум
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,026
06.05.2014, 00:19
С шифром ты разобрался, в Паскале не понимаешь, а в С(++)?
Если нет, то почему бы сразу в этом не признаться, а если да, то тут уже я не понимаю.
Как, допустим, такой достаточно простой пример http://ru.wikibooks.org/wiki/%... 0%BD%D0%B0 не суметь перевести в требуемый язык? Разница минимальна и интуитивно понятна.
Дело не только в языке, но и в понимании задачи, что многие активизировавшиеся в последнее время студенты пытаются усиленно скрыть, выдавая найденный код за "самолично полученный потом и кровью".
Я сам иногда применяю чужой код в том или ином виде для решения части общей задачи, но хотя бы понимаю, что делаю, и как он примерно/точно работает.
Так почему бы не начать пытаться хотя бы немного думать головой.
Блондинок, путающих принтер с модемом, и дворников с высшим образованием стране хватает (да, я брюзга, но тяжело не начать рвать волосы на ..., читая здесь многие темы, содержащие в том числе слово "помогите").
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
06.05.2014, 06:39
В целях сохранения растительности тогда советую воздержаться от чтения тем дамы под ником CocaCola...

Vitali, ты главное пробуй сделать, а ошибки поправить мы поможем.
0
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 4
09.05.2014, 21:48  [ТС]
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
int i,j,k=0,n;
   String Stroka1[255], Stroka2[255];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 
}
//---------------------------------------------------------------------------
 
 
 
 
 
 
 
 
 
 
 
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
for(i=0;i<255;i++)
{
Stroka1[i]=Edit1->Text;
 
     if(Stroka1[i]=="a")
     Stroka2[i]="AAAAA";
     if(Stroka1[i]=="b")
     Stroka2[i]="AAAAB";
     if(Stroka1[i]=="c")
     Stroka2[i]="AAABA";
     if(Stroka1[i]=="d")
     Stroka2[i]="AAABB";
     if(Stroka1[i]=="e")
     Stroka2[i]="AABAA";
     if(Stroka1[i]=="f")
     Stroka2[i]="AABAB";
     if(Stroka1[i]=="g")
     Stroka2[i]="AABBA";
     if(Stroka1[i]=="h")
     Stroka2[i]="AABBB";
     if(Stroka1[i]=="i")
     Stroka2[i]="ABAAA";
     if(Stroka1[i]=="j")
     Stroka2[i]="ABAAB";
     if(Stroka1[i]=="k")
     Stroka2[i]="ABABA";
     if(Stroka1[i]=="l")
     Stroka2[i]="ABABB";
     if(Stroka1[i]=="m")
     Stroka2[i]="ABBAA";
     if(Stroka1[i]=="n")
     Stroka2[i]="ABBAB";
     if(Stroka1[i]=="o")
     Stroka2[i]="ABBBA";
     if(Stroka1[i]=="p")
     Stroka2[i]="ABBBB";
     if(Stroka1[i]=="q")
     Stroka2[i]="BAAAA";
     if(Stroka1[i]=="r")
     Stroka2[i]="BAAAB";
     if(Stroka1[i]=="s")
     Stroka2[i]="BAABA";
     if(Stroka1[i]=="t")
     Stroka2[i]="BAABB";
     if(Stroka1[i]=="u")
     Stroka2[i]="BABAA";
     if(Stroka1[i]=="v")
     Stroka2[i]="BABAB";
     if(Stroka1[i]=="w")
     Stroka2[i]="BABBA";
     if(Stroka1[i]=="x")
     Stroka2[i]="BABBB";
     if(Stroka1[i]=="y")
     Stroka2[i]="BBAAA";
     if(Stroka1[i]=="z")
     Stroka2[i]="BBAAB";
 
     }
 
     for(i=0;i<255;i++)
     Edit2->Text=Stroka2[i];
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
Label1->Caption="Âåä³òü çàøèôðîâàíèé òåêñò";
Label2->Caption="Ðîçøèôðîâàíèé òåêñò";
BitBtn2->Enabled=false;
BitBtn3->Enabled=true;
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
for(i=0;i<255;i++)
{
Stroka1[i]=Edit1->Text;
 
         if(Stroka1[i]=="AAAAA")
         Stroka2[i]="a";
         if(Stroka1[i]=="AAAAB")
         Stroka2[i]="b";
         if(Stroka1[i]=="AAABA")
         Stroka2[i]="c";
         if(Stroka1[i]=="AAABB")
         Stroka2[i]="d";
         if(Stroka1[i]=="AABAA")
         Stroka2[i]="e";
         if(Stroka1[i]=="ABABA")
         Stroka2[i]="f";
         if(Stroka1[i]=="AABBA")
         Stroka2[i]="g";
         if(Stroka1[i]=="AABBB")
         Stroka2[i]="h";
         if(Stroka1[i]=="ABAAA")
         Stroka2[i]="i";
         if(Stroka1[i]=="ABAAB")
         Stroka2[i]="j";
         if(Stroka1[i]=="ABABA")
         Stroka2[i]="k";
         if(Stroka1[i]=="ABABB")
         Stroka2[i]="l";
         if(Stroka1[i]=="ABBAA")
         Stroka2[i]="m";
         if(Stroka1[i]=="ABBAB")
         Stroka2[i]="n";
         if(Stroka1[i]=="ABBBA")
         Stroka2[i]="o";
         if(Stroka1[i]=="ABBBB")
         Stroka2[i]="p";
         if(Stroka1[i]=="BAAAA")
         Stroka2[i]="q";
         if(Stroka1[i]=="BAAAB")
         Stroka2[i]="r";
         if(Stroka1[i]=="BAABA")
         Stroka2[i]="s";
         if(Stroka1[i]=="BAABB")
         Stroka2[i]="t";
         if(Stroka1[i]=="BABAA")
         Stroka2[i]="u";
         if(Stroka1[i]=="BABAB")
         Stroka2[i]="v";
         if(Stroka1[i]=="BABBA")
         Stroka2[i]="w";
         if(Stroka1[i]=="BABBB")
         Stroka2[i]="x";
         if(Stroka1[i]=="BBAAA")
         Stroka2[i]="y";
         if(Stroka1[i]=="BBAAB")
         Stroka2[i]="z";
 
             }
 
     for(i=0;i<255;i++)
     Edit2->Text=Stroka2[i];
 
}
//---------------------------------------------------------------------------
Это мой код. Но, к сожалению, он переводит только по одной букве. Я не могу понять, как сделать, чтобы программа суммировала все буквы.
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
09.05.2014, 22:50
дак просто,
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
Stroka1=Edit1->Text;
Stroka2="";
for(i=0;i<Stroka1.Lenght();i++)
{
     if(Stroka1[i]=="a")
     Stroka2=Stroka2+"AAAAA";
     if(Stroka1[i]=="b")
     Stroka2=Stroka2+"AAAAB";
         ------------
         //и так далее
Это будет само шифрование, а дешифрирование чуточку сложнее.
Вы должны понимать что запись Stroka2[i] говорит, о неком символе в данной переменной. Уточняю о неком символе в единственном числе.
Поэтому Ваш опыт Stroka1[i]=="AAAAA" не совсем удачный, так как 1 никогда не будет равно 4.
0
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 4
10.05.2014, 12:15  [ТС]
Спасибо большое !
Я попробую с дешифровкой что-то сделать.
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
10.05.2014, 12:33
там тоже все просто) н пока попытайтесь сами а потом уже если не получится подскажем
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
13.05.2014, 15:34
Лучший ответ Сообщение было отмечено BRcr как решение

Решение

Вариант на тему циклической последовательности шифра Бэкона. Ибо ручное заполнения словаря влом...

Экзешник - Project1.rar

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
class TForm1 : public TForm
{
__published: // IDE-managed Components
 
    TMemo * memo_decrypted;
    TMemo * memo_code;
    TMemo * memo_encrypted;
    TButton * btn_encrypt;
    TButton * btn_decrypt;
 
    void __fastcall btn_encryptClick( TObject * Sender );
    void __fastcall btn_decryptClick( TObject * Sender );
 
private: // User declarations
 
        public : // User declarations
 
    String letters, codes;
 
    String encrypt_text( AnsiString _text );
    String plant_code( AnsiString _text, const String & _code );
    String pickup_code( const String & _text );
    String decrypt_code( const String & _code );
 
    __fastcall TForm1( TComponent * Owner );
    // __fastcall ~TForm1( );
} ;
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
__fastcall TForm1::TForm1( TComponent * Owner ) :
    TForm( Owner )
{
    letters = "abcdefghijklmnopqrstuvwxyz";
    codes = "aaaaabbbbbabbbaabbababbaaababaab";
}
 
// ---------------------------------------------------------------------------
String TForm1::encrypt_text( AnsiString _text )
{
    String code;
 
    _text = _text.LowerCase( );
    for ( size_t i( 1 ), i_limit( _text.Length( ) ); i <= i_limit; ++i )
    {
        if ( isalpha( _text[ i ] ) )
        {
            code += codes.SubString( letters.Pos( _text[ i ] ), 5 );
        }
    }
    return code;
}
 
// ---------------------------------------------------------------------------
String TForm1::plant_code( AnsiString _text, const String & _code )
{
    _text = _text.LowerCase( );
    for ( size_t i( 1 ), k( 1 ), i_limit( _text.Length( ) ), k_limit( _code.Length( ) );
        ( i <= i_limit ) && ( k <= k_limit ); ++i )
    {
        if ( isalpha( _text[ i ] ) && ( _code[ k++ ] == 'a' ) )
        {
            _text[ i ] = UpperCase( _text[ i ] )[ 1 ];
        }
    }
    return _text;
}
 
// ---------------------------------------------------------------------------
String TForm1::pickup_code( const String & _text )
{
    String code;
 
    for ( size_t i( 1 ), i_limit( _text.Length( ) ); i <= i_limit; ++i )
    {
        if ( isalpha( _text[ i ] ) )
        {
            code += IsUpper( _text, i ) ? 'a' : 'b';
        }
    }
    return code;
}
 
// ---------------------------------------------------------------------------
String TForm1::decrypt_code( const String & _code )
{
    String text;
    for ( size_t i( 1 ), k, i_limit( _code.Length( ) ); i < i_limit; i += 5 )
    {
        if ( k = codes.Pos( _code.SubString( i, 5 ) ) )
        {
            text += letters[ k ];
        }
    }
    return text;
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::btn_encryptClick( TObject * Sender )
{
    String decrypted( memo_decrypted->Text ), code, encrypted( memo_encrypted->Text );
 
    if ( encrypted.Length( ) < decrypted.Length( ) * 5 )
    {
        ShowMessage( "Текст, скрывающий шифр, должен быть минимум в пять раз длиннее скрываемого текста." );
        return;
    }
 
    code = encrypt_text( decrypted );
    memo_code->Text = code;
 
    memo_encrypted->Text = plant_code( encrypted, code );
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::btn_decryptClick( TObject * Sender )
{
    String code, encrypted( memo_encrypted->Text );
 
    code = pickup_code( encrypted );
    memo_code->Lines->Add( "\n\r" + code );
 
    memo_decrypted->Lines->Add( "\n\r" + decrypt_code( code ) );
}
Миниатюры
Реализация шифра Бэкона  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.05.2014, 15:34
Помогаю со студенческими работами здесь

Реализация шифра гаммирования
Помогите разобраться) Нужно написать реализацию шифра гаммирования. Как я это себе представляю: 1)Есть русский алфавит 33 символа ...

Реализация шифра Полибия
Здравствуйте, стоит задание написания программы, реализующей алгоритм Полибия, при этом его как-то модифицировать, программа должна...

Реализация шифра Виженера
Написать программу для шифра Виженера на С++

Реализация шифра Гронсфельда.
Реализация шифра Гронсфельда. Реализация модифицированного шифра Гронсфельда.

Реализация шифра перестановки
надо сгенерировать ключ рандомно, чтобы количество цифры совпадало с буквами по очереди и не повторялись. Например adns 2134. Помогите плиз...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru