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

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

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

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

17.11.2011, 19:21. Просмотров 1181. Ответов 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, но я не могу реализовать,как ни крути...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 19:21     принцип блочного шифрования
Посмотрите здесь:

Реализация блочного алгоритма шифрования - 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++
Реализовать систему симметричного блочного шифрования, позволяющую шифровать и дешифровать файл на диске с использованием заданного...

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

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

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

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

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

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

Принцип работы fstream - C++
Допустим у нас есть файл из четырех чисел, например: 453 32 43 54. Я создаю экземпляр класса ifstream и инициализирую массив из четырех...

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

Getline принцип работы - C++
Не совсем понимаю как влияет цикл. Да, выводится все сообщение, каждая срока с новой строки. Но, как тут происходит взаимодействие с...

Принцип работы strpbrk - C++
Изначально я думал, что он возвращает только 1ый символ, но эта функция _string operator*(_string &amp;a){ _string t; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
17.11.2011, 20:50     принцип блочного шифрования #2
Цитата Сообщение от solomid Посмотреть сообщение
проблема такая,я понимаю как работает блочный шифр,но не могу реализовать его для реального шифрования файлов.
Привёл код и не знаешь как им пользоваться.
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
18.11.2011, 10:11  [ТС]     принцип блочного шифрования #3
Цитата Сообщение от xAtom Посмотреть сообщение
Привёл код и не знаешь как им пользоваться.
я же объяснил сиуацию.
Yandex
Объявления
18.11.2011, 10:11     принцип блочного шифрования
Ответ Создать тему
Опции темы

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