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

Шифровка/дешифровка файла решеткой Кардано - C++

Восстановить пароль Регистрация
 
tankist681
0 / 0 / 0
Регистрация: 13.03.2012
Сообщений: 9
28.05.2013, 01:16     Шифровка/дешифровка файла решеткой Кардано #1
не получается шифровать дешифровать файл с помощью решетки Кардано, кому не трудно, подскажите, что изменить
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
#include <iostream>
#include <conio.h>
#include<stdio.h>
#include<stdlib.h>
 
using namespace std;
int N, flag;
 
void RotationMatrix(int **MatrixKey);//поворот решетки
void Encrypt(char **Sequence, int **MatrixKey);//шифровка данных
void Decipher(char **Sequence, int **MatrixKey);//расшифровка
int  main()
{
    printf ("Enter:\n1 - shifrovat;\n2 - deshifrovat.\n");
    scanf("%d",&flag);
 
    printf( "dlinna shifra:  ");
    scanf("%d",&N);
 
    printf("\nvvedite reshetky-shifr (with space)\n");
    getch();
 
    //выделение памяти для решетки (0 - дырка)
    int **MatrixKey = new int *[N];
    for(int i = 0; i < N; i ++)
        MatrixKey[i] = new int [N];
    //выделение памяти для последовательности
    char **Sequence = new char *[N];
    for(int i = 0; i < N; i ++)
        Sequence[i] = new char [N];
 
    //заполнение решетки
    for (int i = 0; i < N; i ++)
        for (int j = 0; j < N; j ++){
            scanf("%d",MatrixKey[i][j]);
            if (MatrixKey[i][j] == 32 || MatrixKey[i][j] == 13)//проверка на пробел и на переход на следующую строку
                j --;
        }
   FILE *stream; 
char name [40];
scanf ("%s", &name);
stream = fopen ("f1.txt", "r");
    if (flag == 1){
        Encrypt(Sequence, MatrixKey);//шифрование
    }
    if (flag == 2){
        Decipher(Sequence, MatrixKey);//расшифрование
    }
 
 //освобождение памяти
    for(int i = 0; i < N; i ++)
        delete []MatrixKey[i];
    delete []MatrixKey;
    for(int i = 0; i < N; i ++)
        delete []Sequence[i];
    delete []Sequence;
 
    getch();
    return 0;
}
//поворот решетки
void RotationMatrix(int **MatrixKey){
    //выделение памяти для вспомогательной решетки
    int **Matrix = new int *[N];
    for(int i = 0; i < N; i ++)
        Matrix[i] = new int [N];
 
    for (int i = 0; i < N; i ++)
        for (int j = 0; j < N; j ++)
            Matrix[i][j] = MatrixKey[i][j];
    for (int i = 0; i < N; i ++)
        for (int j = 0; j < N; j ++)
            MatrixKey[j][N - i - 1] = Matrix[i][j];
 
    //освобождение памяти
    for(int i = 0; i < N; i ++)
        delete []Matrix[i];
    delete []Matrix;
}
//шифровка данных
void Encrypt(char **Sequence, int **MatrixKey){
    for (int i = 0; i < N; i ++)
        for (int j = 0; j < N; j ++)
            Sequence[i][j] = getch();//посимвольное считывание строки в матрицу
    printf( "\n");
    for (int k = 0; k < 4; k ++){
        for (int i = 0; i < N; i ++)
            for (int j = 0; j < N; j ++){
                if (MatrixKey[i][j] == 0)
                    printf("%d",&Sequence[i][j]);
            }
        RotationMatrix(MatrixKey);
    }
}
//расшифровка
void Decipher(char **Sequence, int **MatrixKey){
    for (int k = 0; k < 4; k ++){
        for (int i = 0; i < N; i ++)
            for (int j = 0; j < N; j ++){
                if (MatrixKey[i][j] == 0)
                    Sequence[i][j] = getch();
            }
        RotationMatrix(MatrixKey);
    }
    printf("\n");
    for (int i = 0; i < N; i ++)
        for (int j = 0; j < N; j ++)
            printf("%d",&Sequence[i][j]);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2013, 01:16     Шифровка/дешифровка файла решеткой Кардано
Посмотрите здесь:

C++ Шифровка и дешифровка текста
C++ шифровка/дешифровка
C++ шифровка\дешифровка пароля\логина
Решетка Кардано C++
C++ Шифрование методом решетки Кардано
C++ Шифровка и дешифровка текстового сообщения
Шифровка/Дешифровка методом Карно (поворота решеткой) C++
Решётка Кардано C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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