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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
#1

принцип блочного шифрования - C++

17.11.2011, 19:21. Просмотров 1225. Ответов 2
Метки нет (Все метки)

проблема такая,я понимаю как работает блочный шифр,но не могу реализовать его для реального шифрования файлов. например вот самый элементарный шифр,он правильно работает для определенного колличества hex блоков в файле
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
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
using namespace std;
typedef unsigned int uint32_t;
 
void encrypt(unsigned int num_rounds, uint32_t *v, uint32_t const *k) {
    unsigned int i;
    uint32_t v0=v[0], v1=v[1], sum=0, delta=0x9E3779B9;
    for (i=0; i < num_rounds; i++) {
        v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
        sum += delta;
        v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]);
    }
    v[0]=v0; v[1]=v1;
}
void decrypt(unsigned int num_rounds, uint32_t *v, uint32_t const *k) {
    unsigned int i;
    uint32_t v0=v[0], v1=v[1], delta=0x9E3779B9, sum=delta*num_rounds;
    for (i=0; i < num_rounds; i++) {
        v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]);
        sum -= delta;
        v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
    }
    v[0]=v0; v[1]=v1;
}
 
int main()
{
    setlocale(LC_ALL,"rus");
    uint32_t k[ 8 ] = {1010101010,1010101010,1010101010,1010101010,1010101010,1010101010,1010101010,1010101010};
    uint32_t v[ 2 ] = {0xbaddface, 0xdadbad12};
    cout << "Текст: " << hex << v[ 0 ] << " " << v[ 1 ] << endl;
    encrypt( 32, v, k );
    cout << "Зашифррованный текст: " << hex << v[ 0 ] << " " << v[ 1 ] << endl;
    decrypt( 32, v, k );
    cout << "Расшифрованный текст: " << hex << v[ 0 ] << " " << v[ 1 ] << endl;
    FILE * f = fopen("1.txt","r");
    for (int i=0;i < 2;i++)
        {
        fscanf(f,"%X",&v[i]);
        }
        fclose(f);
    FILE * f2 = fopen("2.txt","w");
    encrypt(32,v,k);
    for(int i =0;i < 2;i++)
    {
        fprintf(f2,"%X",v[i]);
    }
    f2 = fopen("2.txt","r");
    for(int i =0;i<2;i++)
    {
        fscanf(f2,"%X",&v[i]);
    }
    fclose(f2);
    FILE * f3 = fopen ("3.txt","w");
    decrypt(32,v,k);
    for(int i=0;i<2;i++)
    {   
        fprintf(f3,"%X",v[i]);//
    }
    fclose(f3);
}
а как сделать чтобы он кодировал любой объем любой информации? мне кажется что тут код строк на 20, но я не могу реализовать,как ни крути...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 19:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос принцип блочного шифрования (C++):

Реализовать систему симметричного блочного шифрования (лаба по информационной безопасности) - C++
Реализовать систему симметричного блочного шифрования, позволяющую шифровать и дешифровать файл на диске с использованием заданного...

Реализация блочного алгоритма шифрования - Tiny Encryption Algorithm (TEA) - C++
В общем, имеем код: #include &lt;iostream.h&gt; void encode(long* v, long* k) { unsigned long y=v,z=v, sum=0, /* set up */ ...

принцип подстановки - C++
надо описать 3 объекта используя принци подстановки, код я написал, но компилятор ругается, помогите найти ошибку. #include &lt;iostream&gt; ...

Объясните принцип - C++
printf(&quot;%.2lf&quot;, x) Объясните пожалуйста понятным языком, что делает эта вещь &quot;%.2lf&quot;?

Принцип подстановки - C++
Всем привет. В чём заключается принцип подстановки при работе с классами, а конкретнее, при работе с виртуальными методами. Как оформляется...

Принцип char* - C++
Привет форумчанам. Сам только начинаю изучать с++ и пока мозг не отошел от простоты паскаля, сложно переваривать много новой информации....

2
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
17.11.2011, 20:50 #2
Цитата Сообщение от solomid Посмотреть сообщение
проблема такая,я понимаю как работает блочный шифр,но не могу реализовать его для реального шифрования файлов.
Привёл код и не знаешь как им пользоваться.
0
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
18.11.2011, 10:11  [ТС] #3
Цитата Сообщение от xAtom Посмотреть сообщение
Привёл код и не знаешь как им пользоваться.
я же объяснил сиуацию.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2011, 10:11
Привет! Вот еще темы с ответами:

Принцип 3d программ - C++
Хочеться сделать программу там где ты ходиш в мелкой комнатке с стенками для освоения зд программ. А как принцып какой? там матрица какаято...

Принцип работы switch - C++
Всем доброго времени суток. Изучаю самостоятельно С++. Возник вопрос по поводу функции switch. Каким образом она работает на данном...

Принцип наименьших привилегий - C++
Вопрос такой. Как строго следовать принципу наименьших привилегий? Например: стоит ли объявлять глобальные объекты со спецификатором...

Принцип игры в 21 очко - C++
Если не сложно - то дайте алгоритм(не код), а то не пойму, с чего начинать.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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