Форум программистов, компьютерный форум CyberForum.ru

Шифр Замены - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 44, средняя оценка - 4.77
Uchiha Beck
0 / 0 / 0
Регистрация: 11.02.2010
Сообщений: 7
31.05.2010, 23:24     Шифр Замены #1
Всем Привет!!!Люди помогите пожалуйста мне написать программу на С, которая будет шифровать заменной исходный текст.Под скажите идею, было бы неплохо, если бы показали бы фрагмент кода на С
как шифровать заменой.
Заранее Большое Спасибо!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2010, 23:24     Шифр Замены
Посмотрите здесь:

Шифр замены(код Цезаря) C++
шифр C++
C++ Шифр Цезаря
C++ Шифр Гронсфельда (!)
шифр Гронсфельда C++
C++ Шифр Полибия
Шифр Вижиненра, шифр скитала C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
31.05.2010, 23:30     Шифр Замены #2
Вы имеете в виду код Вижинера и ему подобные?
Uchiha Beck
0 / 0 / 0
Регистрация: 11.02.2010
Сообщений: 7
01.06.2010, 00:01  [ТС]     Шифр Замены #3
Мне сказали чтоб программа шифровала исходный текст припомощи простой замены одного алфавита на другой что-то типо этого:
a b c d e f g h i j k l m n n o p q r s t u v w x y z
q r e w f t j i l y z a p b x o k h c n d s g m u v
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
01.06.2010, 00:25     Шифр Замены #4
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
#include<stdio.h>
#include<conio.h>
#include <iostream.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
int main()
{
    char *text;
    char *key;
    int i, a;
    cin.getline(text, sizeof(text));
    i=strlen(text);
    srand(time(NULL));
    for(a=0;a<i;a++)//рандомное заполнение ключа
        key[a]=char((rand()%255));
    
    for(a=0;a<i;a++)// шифрование
        text[a]+=key[a];
 
    for(a=0;a<i;a++)// дешифрование
        text[a]-=key[a];
 
getch();
return 0;
}
Вот что-то типа того.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
01.06.2010, 00:31     Шифр Замены #5
Цитата Сообщение от IchMors Посмотреть сообщение
char *text;
char *key;
int i, a;
cin.getline(text, sizeof(text));
Где такому программированию учились?
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
01.06.2010, 00:34     Шифр Замены #6
Цитата Сообщение от kazak Посмотреть сообщение
Где такому программированию учились?
я знаю что по дурному, но ведь и так указатель может работать
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
01.06.2010, 00:47     Шифр Замены #7
Такая работа указателя может привести к непредсказуемым последствиям.

Uchiha Beck,
http://www.cyberforum.ru/cpp-beginners/thread84185.html
Шифр Цезаря
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2010, 00:54     Шифр Замены
Еще ссылки по теме:

C++ Шифр простой замены
Шифрование C++ шифр замены C++
C++ Шифр Виженера
Как следует реализовать шифр замены? C++
C++ Расшифровка текста. Шифр простой замены

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

Или воспользуйтесь поиском по форуму:
Mur3ik
102 / 102 / 4
Регистрация: 12.05.2010
Сообщений: 232
01.06.2010, 00:54     Шифр Замены #8
Есть вот такое простенькое.
Шифр Цезаря — один из древнейших шифров. При шифровании каждый символ заменяется другим, отстоящим от него в алфавите на фиксированное число позиций.
Пример
Шифрование с использованием ключа : 3
Оригинальный текст: Съешь же ещё этих мягких французских булок, да выпей чаю.
Шифрованный текст: Фэзыя йз зьи ахлш пвёнлш чугрщцкфнлш дцосн, жг еютзм ъгб.
Дан текстовый файл. Зашифровать его, используя шифр Цезаря. Результат записать в другой файл.
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
#include <iostream>
#include <clocale>
#include <conio.h>
#include <windows.h>
#include <fstream>
#include <io.h>
#include <iomanip>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
 
void main ()
{
setlocale(LC_ALL, "Russian");
FILE *f1=fopen("file.txt","r+");
FILE *f2=fopen("out.txt","w");
    if(f1==NULL)
    {
    cout<<"Нет такого файла"<<endl;
    exit(1);
    }
char *p;
int cleth;
char str[255];
int key=3, lang;
for(int i=0;i>-100;i--)
{cout<<"Letter="<<(char)i<<" code= "<<i<<endl;}
 
cout<<"Какой язык?\n1 - Английский\n2 - Русский\n";
do{
cin>>lang;
if(lang<1||lang>2)
{cout<<"Введите 1 или 2\n";}
}while(lang<1||lang>2);
cout<<"Введите ключ\n";
do{
cin>>key;
if(lang==1&&key<1||key>25&&lang==1)
{cout<<"Ключ может быть от 1 до 25:\n";}
if(lang==2&&key<1||key>32&&lang==2)
{cout<<"Ключ может быть от 1 до 32:\n";}
}while(key<1||key>25&&lang==1||key>32&&lang==2);
while(!feof(f1))
{
fgets(str,254,f1);
    cleth=strlen(str);
    p=new char [cleth];
    p[cleth]='\0';
        for(int i=0; i<cleth; i++)
        {
            cout<<"Letter="<<str[i]<<" code= "<<(int)str[i]<<endl;
            if((int)str[i]<=90&&(int)str[i]>=65&&lang==1)
                {
                    if((int)str[i]+key<=90)
                    {p[i]=(int)str[i]+key;}
                    if((int)str[i]+key>90)
                    {p[i]=64+(int)str[i]+key-90;}
                }
            else
            if((int)str[i]<=122&&(int)str[i]>=97&&lang==1)
                {
                    if((int)str[i]+key<=122)
                    {p[i]=(int)str[i]+key;}
                    if((int)str[i]+key>122)
                    {p[i]=96+(int)str[i]+key-122;}
                }
            else
            if((int)str[i]<=-33&&(int)str[i]>=-64&&lang==2)
                {
                    if((int)str[i]+key<=-33)
                    {p[i]=(int)str[i]+key;}
                    if((int)str[i]+key>-33)
                    {p[i]=-34+(int)str[i]+key+64;}
                }
            else
            if((int)str[i]<=-1&&(int)str[i]>=-32&&lang==2)
                {
                    if((int)str[i]+key<=-1)
                    {p[i]=(int)str[i]+key;}
                    if((int)str[i]+key>-1)
                    {p[i]=-2+(int)str[i]+key+32;}
                }
            else
                {
                p[i]=str[i];
                }
        }
    fprintf(f2,"%s\n",p );  
    }
fclose(f1);
fclose(f2);
}
Yandex
Объявления
01.06.2010, 00:54     Шифр Замены
Ответ Создать тему
Опции темы

Текущее время: 07:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru