Форум программистов, компьютерный форум, киберфорум
Наши страницы
Криптография
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
1

Алгоритм TEA (XTEA)

27.05.2013, 16:55. Просмотров 828. Ответов 1
Метки нет (Все метки)

Доброго времени суток!
Нашел код выполнения шифрования по алгоритму TEA. Не могли бы подсказать, где какие функции, операторы выполняются? или указать путь к изучению? Просто преподавателю нужно обьяснить что тут написано. Спасибо
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
#include <iostream>
#include <fstream>
#include <stdint.h>
using namespace std;
 
unsigned int key[4]={0xFDA5,0xD54E,0xFC00,0xB55A}; // encryption key
 
#define BLOCK_SIZE 8
void xtea_encipher(unsigned int num_rounds, uint32_t v[2], uint32_t const key[4]) {
    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 + key[sum & 3]);
        sum += delta;
        v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + key[(sum>>11) & 3]);
    }
    v[0]=v0; v[1]=v1;
}
 
void xtea_decipher(unsigned int num_rounds, uint32_t v[2], uint32_t const key[4]) {
    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 + key[(sum>>11) & 3]);
        sum -= delta;
        v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + key[sum & 3]);
    }
    v[0]=v0; v[1]=v1;
}
 
void StringCrypt(char *inout,int len,bool encrypt)
{
  for(int i=0;i<len/BLOCK_SIZE;i++)
    {
      if(encrypt)
          xtea_encipher(32,(uint32_t*)(inout+(i*BLOCK_SIZE)),key);
      else
          xtea_decipher(32,(uint32_t*)(inout+(i*BLOCK_SIZE)),key);
    }
  if(len%BLOCK_SIZE!=0)
    {
        int mod=len%BLOCK_SIZE;
        int offset=(len/BLOCK_SIZE)*BLOCK_SIZE;
        char data[BLOCK_SIZE];
        memcpy(data,inout+offset,mod);
 
        if(encrypt)
            xtea_encipher(32,(uint32_t*)data,key);
        else
            xtea_decipher(32,(uint32_t*)data,key);
 
        memcpy(inout+offset,data,mod);
    }
}
 
 int main()
{
  char str[16]={"Hello, world!"}; // 16 mod 8 =0
  int len=sizeof(str);
 
  StringCrypt(str,len,true);
 
  cout <<"Encrypted string: ";
  for(int i=0;i<len;i++)
      cout <<str[i];
  cout <<endl;
 
  StringCrypt(str,len,false);
 
  cout <<"Decrypted string: ";
  cout <<str<<endl;
 }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 16:55
Ответы с готовыми решениями:

Алгоритм шифрования XTEA
При построении решения, ошибок не выдает. Все работает. Вопрос вот в чем: при...

XTEA на Python
Доброго времени суток,товарищи! Моя задача реализовать алгоритм шифрования...

Шифрование строки типа string методом xtea
Добрый день||вечер||утро, уважаемые форумчане! Туплю неимоверно. Нужно...

Шифр TEA
Привет всем, помогите написать блочный шифр под названием TEA =) я сам нуб в...

Новый вариант алгоритма TEA
Алгоритм GTEA (Green TEA) объединяет в себе некоторые идеи шифра TEA и...

1
gazlan
3143 / 1920 / 311
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
28.05.2013, 21:58 2
С картинками: Tiny Encryption Algorithm
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2013, 21:58

Tea-Pot`s questions\часть 1
Здрасьте... Мммммм.... я в принципе являюсь пока зеленым новичком в области...

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

Проверить, входит ли в текст каждая из букв слова "tea"
обеспечить ввод произвольной строки оканчивающейся символом *. Если в текст...


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

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

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