Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/88: Рейтинг темы: голосов - 88, средняя оценка - 4.65
3 / 1 / 0
Регистрация: 27.01.2014
Сообщений: 42

Шифр Виженера, шифр Скитала

25.02.2014, 12:36. Показов 18685. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я много прочитал информации и захотел реализовать эти шифры на Buider C++, а вот как это сделать. Кому интересно, напишите мне примеры этих кодов. Интересно ведь)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.02.2014, 12:36
Ответы с готовыми решениями:

Шифр Сцитала (Скитала)
Помогите найти ошибку. За ранее спасибо! #include "stdafx.h" #include <iostream> using namespace std; void main() ...

Шифр Виженера на C++
Помогите пожалуйста с заданием. От вас зависит стипендия в течении семестра. Рабочее задание: Реализовать программно шифр Виженера...

Шифр Виженера
Был бы до жути благодарен с помощью шифра Виженера... С этими шифрами вообще что-то не ладится... Заранее большое спасибо!!!!

4
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
25.02.2014, 12:45
Цитата Сообщение от Dye Посмотреть сообщение
захотел реализовать
Цитата Сообщение от Dye Посмотреть сообщение
напишите мне
я чего-то не понимаю...
0
Учусь
 Аватар для Humster13
7 / 7 / 5
Регистрация: 16.02.2014
Сообщений: 47
25.02.2014, 12:49
Цитата Сообщение от Dye Посмотреть сообщение
Я много прочитал информации и захотел реализовать эти шифры
Так может просветите и примерный алгоритм накидаете? А то мы не местные...
0
3 / 1 / 0
Регистрация: 27.01.2014
Сообщений: 42
25.02.2014, 12:54  [ТС]
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
#include "stdafx.h"
#include <ctime>
#include <string>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    string B, C, D = "";
setlocale(LC_ALL, "Rus");
string A="abcdefghijklmnopqrstvuwxyz"; //Наш алфавит. От него прыгаем
cout<<"Введите слово: ";
cin>>B;
cout<<"Введите ключ: ";
cin>>C;
int *F= new int [B.size()];//выделяем динамическую память под размер слова
int *G= new int [B.size()];
int c=C.size();//размер ключа
int b=B.size();//размер слова
 
 
//Наша растяжка ключа до длины слова
if(b>=c)//если размер слова превышает размер ключа
{
    for(int i=0; i<(b/c); i++)/*цикл пробега до целого числа при делении кол-ва символов слова на длину символов ключа (например, 8/5 = 1) 
                                   то бишь в D запишется полностью ключ + еще место останется*/
    {
        D=D+C;
    }
    for(int j=0; j<(b%c); j++)
    {
        D=D+C[j];/*Сюда будут дописываться символы (ошметки от деления) ключа. В нашем случае при делении 8/5 - это 3. То есть 
                 запишутся первые 3 символа ключа*/
    }
}
else /*Иначе, если длина ключа больше длины слова*/
{
    for(int s=0; s<b; s++)
    {
        D=D+C[s];//расчлененка ключа до размера слова. Просто урежем и выведем
    }
}
cout<<D<<endl;
/*Начинаем шифровать */
///////////////////////////////
for(int k=0; k<b; k++)//используем b, так как слово введенное = растянутому ключу.
{
    for(int n=0; n<26; n++)//пробежка по всему алфавиту (буковок в англ 26)
    {
        if(B[k]==A[n])//Если элемент стринговского массива слова совпадает с элементом в алфавите, то записать элемент в массив F
        {
            F[k]=n;//заносим номер элемента слова 
        }
        if(D[k]==A[n])//Если элемент стринговского массива уже ключа совпадает с элементом в алфавите, то записать элемент в массив G
        {
            G[k]=n;//заносим номер элемента ключа растянутого заносим в G
        }
    }
}
int e=0;//номер в алфавите зашифрованной буквы
 
for(int u=0; u<b; u++)//вновь пробежка по слову введенному. Это нужно сделатьЮ иначе, как только прога дойдет до
    /* конца алфавита, она тупо встанет и будет артачиться. Этим циклом мы заставляем ее бежать по кругу, то есть шифровать с начала алфавита, как 
    только она доходит до конца. */
{
    e=((F[u]+G[u])%26);//сумма номеров букв ключа и слова
    B[u]=A[e]; //перезапись аброкадаброй на нормальное слово
}
cout<<""<<B;//вывод шифрованного слова
return 0;
}
Вот примерно что я прошу. Шифр скитала не могу нигде найти.
0
Учусь
 Аватар для Humster13
7 / 7 / 5
Регистрация: 16.02.2014
Сообщений: 47
25.02.2014, 14:19
Лучший ответ Сообщение было отмечено Dye как решение

Решение

Шифр Вижиненра (ваш код, только не на пол страницы)

Кликните здесь для просмотра всего текста
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
#include "stdafx.h"
#include <ctime>
#include <string>
#include <iostream>
#include "stdlib.h"
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    string B, C, D = "";
    setlocale(LC_ALL, "Rus");
    string A="abcdefghijklmnopqrstvuwxyz"; //Наш алфавит. От него прыгаем
    cout<<"Введите слово: ";
    cin>>B;
    cout<<"Введите ключ: ";
    cin>>C;
    int *F= new int [B.size()];//выделяем динамическую память под размер слова
    int *G= new int [B.size()];
    int c=C.size();//размер ключа
    int b=B.size();//размер слова
    //Наша растяжка ключа до длины слова
    if(b>=c)//если размер слова превышает размер ключа
 
    {
        for(int i=0; i<(b/c); i++)/*цикл пробега до целого числа при делении кол-ва символов слова на длину символов ключа (например, 8/5 = 1) 
                                    то бишь в D запишется полностью ключ + еще место останется*/
        {
            D=D+C;
        }
        for(int j=0; j<(b%c); j++)
        {
            D=D+C[j];/*Сюда будут дописываться символы (ошметки от деления) ключа. В нашем случае при делении 8/5 - это 3. То есть 
                        запишутся первые 3 символа ключа*/
        }
    }
    else /*Иначе, если длина ключа больше длины слова*/
    {
        for(int s=0; s<b; s++)
        {
            D=D+C[s];//расчлененка ключа до размера слова. Просто урежем и выведем
        }
    }
    cout<<D<<endl;
/*Начинаем шифровать */
///////////////////////////////
    for(int k=0; k<b; k++)//используем b, так как слово введенное = растянутому ключу.
    {
        for(int n=0; n<26; n++)//пробежка по всему алфавиту (буковок в англ 26)
        {
            if(B[k]==A[n])//Если элемент стринговского массива слова совпадает с элементом в алфавите, то записать элемент в массив F
            {
                F[k]=n;//заносим номер элемента слова 
            }
            if(D[k]==A[n])//Если элемент стринговского массива уже ключа совпадает с элементом в алфавите, то записать элемент в массив G
            {
                G[k]=n;//заносим номер элемента ключа растянутого заносим в G
            }
        }
    }
    int e=0;//номер в алфавите зашифрованной буквы
    for(int u=0; u<b; u++)//вновь пробежка по слову введенному. Это нужно сделатьЮ иначе, как только прога дойдет до
/* конца алфавита, она тупо встанет и будет артачиться. Этим циклом мы заставляем ее бежать по кругу, то есть шифровать с начала алфавита, как 
только она доходит до конца. */
    {
        e=((F[u]+G[u])%26);//сумма номеров букв ключа и слова
        B[u]=A[e]; //перезапись аброкадаброй на нормальное слово
    }
    cout<< "" << B << "\n"; //вывод шифрованного слова
    system ("pause"); 
 
    return 0;
}


Шифр Скитала на С#

Реализовать шифр "скитала"
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.02.2014, 14:19
Помогаю со студенческими работами здесь

Шифр Виженера
У кого есть исходник на Си ?

Шифр Виженера
Надо написать программу на С++, расшифровывающую сообщение, зашифрованное шифром Виженера. Слово-ключ не дано. То есть сначала надо...

Шифр Виженера c++
Шифр Виженера c++

Шифр Виженера
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;sstream&gt; #include...

Шифр Виженера, добавить дешифрование
Шифр Виженера, С++, дешифрование Есть программа, которая зашифровывает, нужно доделать ее так, чтобы она еще и расшифровывала ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru