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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С++ Дана строка содержащая текст заканчивающийся точкой. Вывести на экран слова содержащие 3 буквы http://www.cyberforum.ru/cpp-beginners/thread1190091.html
ребята, буду очень благодарна за программу! и если не сложно, добавьте комментарии. но можно и без них. всем добра и шикарной погоды.
C++ Измерение и вывод времени, затраченного на сортировку чисел Необходимо написать программу в с++, которая: Читает файл input.txt с числами (в каждой строке есть одно и только одно целое положительное число); в файле может быть от одного до 100000 (ста тысяч) чисел; сортирует числа по неубыванию; записывает отсортированные числа в файл output.txt (формат тот же: каждое число записывается в свою строку). Программа должна измерять время, затраченное на... http://www.cyberforum.ru/cpp-beginners/thread1190090.html
Вид матрицы с нулевыми строками C++
помогите написать программу, где все элементы четных строк - нулевые. чтоб такую матрицу выводило.
C++ Головоломка
//PC1.cpp== Считывает числа с текстового файла и записывает в массив. #include <fstream> #include <iostream> int SIZE = 50; using namespace std; int i; int main(int argc, char *argv) { system("chcp 1251");
C++ БПФ http://www.cyberforum.ru/cpp-beginners/thread1190077.html
Требуется помощь в написании программы в c++ . Граф-бабочку рисовать в программе не нужно. http://puu.sh/93kDf.png http://puu.sh/93kF8.png
C++ разработка и проверка класса Реализовать для разработанного класса методы-операторы: +, - (плюс и минус) - для сложения и вычитания значений времени, при этом все данные должны быть типа CTime ++, --(два плюса или два минуса подряд) – уменьшение или увеличение значения времени на 1 секунду == (два знака равенства подряд) - для сравнения двух значений времени, результатом этой операции должен быть 0, если значения... подробнее

Показать сообщение отдельно
AlexanderKAS
0 / 0 / 0
Регистрация: 26.05.2014
Сообщений: 7

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

27.05.2014, 17:29. Просмотров 1791. Ответов 1
Метки (Все метки)

Необходимо разработать программу для шифрования/дешифрования
файлов методом перестановки. Размер блока 11 байт.Так же в программе
должна быть возможность использования блочного шифра, в данном случае
используется режим Output Feedback (OFB). Программа должна выводить
информацию о процессе шифрования/дешифрования и информацию о
скорости выполнения процедур (символов в секунду).

Есть программа, но не шифрует/дешифрирует, помогите разобраться
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
#include "stdafx.h"
#include <windows.h>
#include <conio.h>
#include <iostream>
#include <fstream>
using namespacestd;
#defineSIZE 11
char* cipher(char*Block,char*pas){
intPasArray[SIZE];
PasArray[0]=10;
for(inti=1;i<11;i++)
PasArray[i]=pas[i-1]-48;
char*ResultArr= new char[SIZE+1];
for(inti=0;i<SIZE;i++)
ResultArr[i]=Block[PasArray[i]];
ResultArr[SIZE]='\0';
returnResultArr;
}
char*decipher(char*Block,char*pas){
intPasArray[SIZE];
PasArray[0]=10;
for(inti=1;i<SIZE;i++)
PasArray[i]=pas[i-1]-48;
char*ResultArr= new char[SIZE+1];
for(inti=0;i<SIZE;i++)
ResultArr[PasArray[i]]=Block[i];
ResultArr[SIZE]='\0';
returnResultArr;
}
//------------------------------------------------------------------voidencryption(char*FileName,char*pas,char*IV,boolBlockFlag){
DWORD time=GetTickCount(),size=0,i=0,CRC=0;
fstream fText (FileName, ios::in | fstream::binary);
fstream fCipher("C:/result.txt", ios::out | fstream::binary);
char*tmpStr=new char[SIZE+1];
tmpStr[SIZE]='\0';
fText.seekg( 0, ios::end ); 
size=fText.tellp();
fText.seekg( 0, ios::beg );
cout<<"Encryption"<<endl;
cout<<"Progress:";
if(!BlockFlag){
while(i<size){
for(intj=0;j<SIZE;j++){
tmpStr[j]=fText.get();
i++;
if(i%(size/20)==0) cout<<"|";
}
for(intj=0;j<SIZE-1;j++)
CRC+=tmpStr[j]-tmpStr[j+1];
fCipher<<cipher(tmpStr,pas);
}
}
else{
char*cipBlock=IV;
while(i<size){
cipBlock=cipher(cipBlock,pas);
for(intj=0;j<SIZE;j++){
tmpStr[j]=cipBlock[j]^fText.get();
i++;
if(i%(size/20)==0) cout<<"|";
}
fCipher<<tmpStr;
}
}
fCipher<<CRC;
cout<<endl;
if((time-=GetTickCount())==0)
cout<<"Speed:"<<"#inf"<<endl;
elsecout<<"Speed:"<<size*1000/(-time)<<" letter/s"<<endl;
fText.close();
fCipher.close();
delete[]tmpStr;
}
//------------------------------------------------------------------voiddecryption(char*FileName,char*pas,char*IV,boolBlockFlag){
DWORD time=GetTickCount(),size=0,i=0;
fstream fText (FileName, ios::in | fstream::binary);
fstream fCipher("C:/result2.txt", ios::out | fstream::binary);
char*tmpStr=new char[SIZE+1];
tmpStr[SIZE]='\0';
fText.seekg( 0, ios::end ); 
size=fText.tellp();
fText.seekg( 0, ios::beg );
cout<<"Decryption:"<<endl;
cout<<"Progress:";
if(!BlockFlag){
while(i<size){
for(intj=0;j<SIZE;j++){
tmpStr[j]=fText.get();
i++;
if(i%(size/20)==0) cout<<"|";
}
fCipher<<decipher(tmpStr,pas);
}
}
else{
char*cipBlock=IV;
while(i<size){
cipBlock=cipher(cipBlock,pas);
for(intj=0;j<SIZE;j++){
tmpStr[j]=cipBlock[j]^fText.get();
i++;
if(i%(size/20)==0) cout<<"|";
}
fCipher<<tmpStr;
}
}[]http://vk.com/doc45945512_302391198[/]
cout<<endl;
if((time-=GetTickCount())==0)
cout<<"Speed: #inf"<<endl;
elsecout<<"Speed:"<<size*1000/(-time)<<" letter/s"<<endl;;
fText.close();
fCipher.close();
delete[]tmpStr;
}
//------------------------------------------------------------------int_tmain(intargc, char* argv[])
{
if(argc!=5) {
cout<<"Parametrs error"<<endl;
exit(0);
}
if(!strcmp(argv[1],"enc")){
if(!strcmp(argv[4],"N"))
encryption(argv[2],argv[3],"11111111111",false);
if(!strcmp(argv[4],"B"))
encryption(argv[2],argv[3],"11111111111",true);
}
if(!strcmp(argv[1],"dec")){
if(!strcmp(argv[4],"N"))
decryption(argv[2],argv[3],"11111111111",false);
if(!strcmp(argv[4],"B"))
decryption(argv[2],argv[3],"11111111111",true);
}
return0;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru