Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
1 / 1 / 3
Регистрация: 22.09.2011
Сообщений: 86
1

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

17.11.2011, 19:21. Просмотров 2868. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2011, 19:21
Ответы с готовыми решениями:

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

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

Алгоритм блочного шифрования
Здравствуйте, подскажите пожалуйста, может у кого уже было что-то подобное: разработать свой...

Принцип шифрования Виженера
возникла вот такая не лепая ошибка в коде, не как не могу решить( Проэкт прикрепил! using System;...

2
932 / 757 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
17.11.2011, 20:50 2
Цитата Сообщение от solomid Посмотреть сообщение
проблема такая,я понимаю как работает блочный шифр,но не могу реализовать его для реального шифрования файлов.
Привёл код и не знаешь как им пользоваться.
0
1 / 1 / 3
Регистрация: 22.09.2011
Сообщений: 86
18.11.2011, 10:11  [ТС] 3
Цитата Сообщение от xAtom Посмотреть сообщение
Привёл код и не знаешь как им пользоваться.
я же объяснил сиуацию.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2011, 10:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Выяснить принцип шифрования
Есть неизвестная функция M = f(N). M и N длиной 4 байта. Функция 99% не обратимая т.к....

Изменить принцип шифрования
Здравствуйте. Пишу программу по стеганографии wav файлов. Помимо секретного сообщения в аудио...

Выяснить принцип шифрования текста
Нужно вытащить тесты (точнее расшифровать) из программы, которая написана в билдере. Тесты...

Принцип шифрования данных при передаче (аутентификатор)
Привет всем, вопрос прост и сложен одновременно, как можно передавать зашифрованную информацию по...


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

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

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