Главная страница

Шифр цезаря и вижена С. Документ Microsoft Word. Программа шифрования кодом Цезаря


Скачать 17.15 Kb.
НазваниеПрограмма шифрования кодом Цезаря
АнкорШифр цезаря и вижена С
Дата15.03.2021
Размер17.15 Kb.
Формат файлаdocx
Имя файлаДокумент Microsoft Word.docx
ТипПрограмма
#184733

1

Процедур шифрования и расшифрования с использованием шифра Цезаря при

вводе с клавиатуры ключа и исходного или зашифрованного текста. Учтите регистр

вводимого текста.

/*Программа шифрования кодом Цезаря*/

#include //необходимо для printf

#include //необходимо для getch

#include //необходимо для puts

int main()

{

/*инициализируем переменные*/

int i=0, n=0, k;

int d;

char alf[] = "abcedfghijklmnopqrstuvwxyz0123456789#!@$%^&*-+=";//словарь

char buf[10];//массив для ввода сообщения

char decod[10];//массив для ввода сообщения

/*вывод названия программы*/

printf("\nBorland C++ 3.1");

printf("\nProgramma shifrovanija kodom Tsezarja\n");

/*Процедура шифрования ввод*/

printf("\n***Shifrovanie***");

printf("\nVvedite slovo ili tsifrj :");

scanf("%s",&buf);//ввод слова или цифр

printf("\nVvedite tzifrovoj cluch, (shag ot 1 do 10):  ");

scanf("%i",&k);//вводим ключ

for (n=0; n < 10; n++)

{

for (i = 0; i < 47; i++)

{

if (buf[n] == alf[i])

{

if (i >= 47)

buf[n] = alf[i-47];

else

buf[n] = alf[i+k];//сдвигаем вправо на показания шага ключа

break;//принудительно выходим из цикла

}

}

}

printf("\nVash shefr= %s\n", buf);//выводим полученный шифр

/*Процедура дешифрования ввод*/

printf("\n--Deshifrovanie---\n");

printf("\nVvedite vash shifr : ");

scanf("%s",&decod);//вводим шифр

printf("\nVvedite tzifrovoj cluch, (shag ot 1 do 10): ");

scanf("%i",&d);//вводим ключ

for (n=0; n < 10; n++)

{

for (i = 0; i < 47; i++)

{

if (decod[n] == alf[i])

{

if (i >= 47)

decod[n] = alf[i-47];

else

decod[n] = alf[i-d];//сдвигаем влево на показания шага ключа

break;//принудительно выходим из цикла

}

}

}

printf("\nShefr= ");

puts (decod);//выводим код

getch();//задержка программы

return 0;

}//конец

2

Процедур шифрования и расшифрования с использованием шифра Цезаря при

вводе с клавиатуры ключа и текстового файла. Учтите регистр вводимого текста.

using System;

public class CaesarCipher

{

//символы русской азбуки

const string alfabet = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";

private string CodeEncode(string text, int k)

{

//добавляем в алфавит маленькие буквы

var fullAlfabet = alfabet + alfabet.ToLower();

var letterQty = fullAlfabet.Length;

var retVal = "";

for (int i = 0; i < text.Length; i++)

{

var c = text[i];

var index = fullAlfabet.IndexOf(c);

if (index < 0)

{

//если символ не найден, то добавляем его в неизменном виде

retVal += c.ToString();

}

else

{

var codeIndex = (letterQty + index + k) % letterQty;

retVal += fullAlfabet[codeIndex];

}

}

return retVal;

}

//шифрование текста

public string Encrypt(string plainMessage, int key)

=> CodeEncode(plainMessage, key);

//дешифрование текста

public string Decrypt(string encryptedMessage, int key)

=> CodeEncode(encryptedMessage, -key);

}

class Program

{

static void Main(string[] args)

{

var cipher = new CaesarCipher();

Console.Write("Введите текст: ");

var message = Console.ReadLine();

Console.Write("Введите ключ: ");

var secretKey = Convert.ToInt32(Console.ReadLine());

var encryptedText = cipher.Encrypt(message, secretKey);

Console.WriteLine("Зашифрованное сообщение: {0}", encryptedText);

Console.WriteLine("Расшифрованное сообщение: {0}", cipher.Decrypt(encryptedText, secretKey));

Console.ReadLine();

}

}

3

Процедур шифрования и расшифрования с использованием шифра Вижинера при

вводе с клавиатуры ключа и исходного или зашифрованного текста. Учтите регистр

вводимого текста.

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


// шифр Вижинера

#include

#include

#include

using namespace std;

 

 

int main(int argc, char* argv[])

{

    setlocale(LC_ALL, "Russian");

           // строка, содержащая алфавит

    string abc ("абвгдеёжзиёклмнопрстуфхцчшщъыьэюя");

    string key; // строка-ключ

    string msg; // строка- текст для шифрования

    string crypted; // строка - зашифрованный текст

    int k,len,a;

 

    cout <<"Введите текст для шифрования на русском без пробелов"<
           getline (cin, msg);

    cout << "Введите ключ на русском языке"<< endl;

    getline (cin, key);

    k = key.length(); // длина ключа

    cout << k << endl;

    len = msg.length(); //  длина текста для шифрования

    a= abc.length(); // мощность алфавита

   

    // заполние строки ключа по всей длине открытого текста

    for (int i=k; i
        key=key+key[i%k];

    }

    k = key.length(); // длина ключа

    cout << key << endl;

 

    // шифрование

    int ind1,ind2;

    for (int i=0; i
        ind1=abc.find(msg[i]);

        ind2=abc.find(key[i]);

        crypted.insert(i,1,abc.at((ind1+ind2)%33));

    }

    cout << crypted << '\n';

           return 0;

}

4

Процедур шифрования и расшифрования с использованием шифра Вижинера при

вводе с клавиатуры ключа и текстового файла. Учтите регистр вводимого текста.

5

Постройте программно таблицу Вижинера и выведите в файл.


написать администратору сайта