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

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

Войти
Регистрация
Восстановить пароль
 
Антонн
9 / 8 / 2
Регистрация: 08.03.2010
Сообщений: 70
#1

блочный шифр ХТЕА - C++

14.09.2012, 09:59. Просмотров 959. Ответов 2
Метки нет (Все метки)

Здорова всем.
Помогите пожалуйста реализовать программный код блочного шифра ХТЕА.
Сам программный код у меня есть. Проблема заключается в его реализации так как я не умею программировать на С++.

Текст программы

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
#include<stdio.h>
#include<memory.h>
 
typedef unsigned char byte;
typedef unsigned long dword;
 
 
#define TEA_CONST 0x9E3779B9 // (sqrt(5)-1) * (2^31)
#define TEA_ROUNDS 32
 
class XTEA{
    inline void _Encrypt(dword &l,dword &r,dword key[4]);
    inline void _Decrypt(dword &l,dword &r,dword key[4]);
public:
    void EncryptBlock(byte in[8],byte out[8],byte key[16]);
    void DecryptBlock(byte in[8],byte out[8],byte key[16]);
};
 
void XTEA::_Encrypt(dword &l,dword &r,dword key[4])
{
    dword sum=0;
    for(unsigned int n=0; n<TEA_ROUNDS; n++) {
        l+=(((r<<4)^(r>>5))+r)^(sum+key[sum&3]);
        sum+=TEA_CONST;
        r+=(((l<<4)^(l>>5))+l)^(sum+key[(sum>>11)&3]);
    }
}
 
void XTEA::_Decrypt(dword &l,dword &r,dword key[4])
{
    dword sum=TEA_CONST*TEA_ROUNDS;
    for(unsigned int n=0; n<TEA_ROUNDS; n++) {
        r-=(((l<<4)^(l>>5))+l)^(sum+key[(sum>>11)&3]);
        sum-=TEA_CONST;
        l-=(((r<<4)^(r>>5))+r)^(sum+key[sum&3]);
    }
}
 
 
void XTEA::EncryptBlock(byte in[8],byte out[8],byte key[16])
{
    dword l,r;
    dword *_in =(dword*) in;
    dword *_out=(dword*)out;
    l=_in[0]; r=_in[1];
    _Encrypt(l,r,(dword*)key);
    _out[0]=l; _out[1]=r;
}
 
 
void XTEA::decryptBlock(byte in[8],byte out[8],byte key[16])
{
    dword l,r;
    dword *_in =(dword*) in;
    dword *_out=(dword*)out;
    l=_in[0]; r=_in[1];
    _Decrypt(l,r,(dword*)key);
    _out[0]=l; _out[1]=r;
}
 
 
void main()
{
    byte res1[8],res2[8];
    byte data[]="12345678";
    byte key[]={"qwerty01" "qwerty02"};
    byte test[8]={0x98,0x17,0x2c,0xd2,0x42,0x07,0x8b,0xfc};
 
    XTEA tea;
    tea.EncryptBlock(data,res1,key);
    tea.DecryptBlock(res1,res2,key);
 
    if(sizeof(dword)!=4 || sizeof(byte)!=1) printf("type error\n\a"),getchar();
    if(memcmp(res1,test,8) || memcmp(res2,data,8)) printf("Internal error!\n\a"),getchar();
    printf("done...\n");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2012, 09:59     блочный шифр ХТЕА
Посмотрите здесь:

Линейный блочный код - C++
Делаю лабу по линейным блочным кодам (Линейный код (6,3)). В общем задание выглядит так: Пользователь вводит текстовое сообщение в окно,...

Сортировка карманным методом (блочный метод) - C++
Помогите. Нужен программный код для сортировки массива карманным методом (блочный метод).

Организовать поиск книги по коду, используя М-блочный метод - C++
Дан массив записей, каждый из которых содержит информацию: код книги, автор, название книги, издательство, год выпуска, количество страниц....

Структура "Государство". Блочный ввод-вывод - C++
Структура &quot;Государство&quot;: - название; - столица; - численность населения; - занимаемая площадь. Удалить все элементы, у которых...

Структура "Государство". Блочный ввод-вывод - C++
Задание. Сформировать двоичный файл из элементов, заданных в варианте структуры.Напишите программу, которая бы позволяла: - добавлять...

Шифр Гронсфельда - C++
Такой вопрос. Почему функция Gronsfeld всегда возвращает значение 0 (&quot;\0&quot;)? Может где ошибка, я не могу понять где? Помогите, кто может ...

Шифр Атбаш - C++
Всем привет. Нужна помощь! Составить программу в Borland C++, которая позволит закодировать исходный текст шифром Атбаш и выполнить...

Шифр Вижинера - C++
Здравствуйте.Нужно написать шифр Вижинера с файлами,т.е. 1 файл-исходный текст,2ой зашифрованный,ну а ключ вводится в консоли.Длина...

Шифр Бэкона c++ - C++
Народ,помогите пожалуйста перевести шифр с паскаля на c++ :) program strug_production; var s_out, s_in, str,itogstroka,tekbukva:...

Шифр Вижинера С++ - C++
Доброго времени суток помогите реализовать шифр Вижинера на с++(файлы скину).Необходимо сделать после шифровки методом Гаусса шифровку...

Raiden(шифр) - C++
Здравствуйте, уважаемые!) Нужно переделать шифр Raiden на си (без плюсов). Имеется этот шифр на си++(вики) void...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
87 / 739 / 75
Регистрация: 11.04.2012
Сообщений: 971
14.09.2012, 11:52     блочный шифр ХТЕА #2
Вот исходники и pdf по TEA,XTEA, XXTEA
Вложения
Тип файла: zip tea.zip (111.9 Кб, 107 просмотров)
Антонн
9 / 8 / 2
Регистрация: 08.03.2010
Сообщений: 70
14.09.2012, 13:13  [ТС]     блочный шифр ХТЕА #3
Спасибо огромное
Yandex
Объявления
14.09.2012, 13:13     блочный шифр ХТЕА
Ответ Создать тему
Опции темы

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