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

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

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

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

17.11.2011, 19:21. Просмотров 1117. Ответов 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++
C++ принцип подстановки
Принцип 3d программ C++
Принцип игры в 21 очко C++
Принцип char* C++
Принцип работы strpbrk C++
Объясните принцип C++
Принцип работы fstream C++
Принцип подстановки C++
Реализовать систему симметричного блочного шифрования (лаба по информационной безопасности) C++
Принцип работы pthread_join C++
C++ Getline принцип работы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
911 / 736 / 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     принцип блочного шифрования
Ответ Создать тему
Опции темы

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