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

Алгоритм шифрования WAKE - C++

Восстановить пароль Регистрация
 
komarov
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 6
07.12.2012, 14:52     Алгоритм шифрования WAKE #1
Пытаюсь реализовать алгоритм шифрования WAKE, нашел сайт, где функции вроде бы описаны, но не могу разобраться, как их применять, так же есть исходник, где видимо пытались реализовать алгоритм, но он тоже не работает, может кто-нибудь помочь?

Вот сайт: http://www.cix.co.uk/~klockstone/wake.htm

Исходник:
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>
#include <stdio.h>
 
using namespace std;
void cypher (long V[],long n,long k[],long r[],long t[]);
void genkey (long t[], long k[]);
 
int main()
{
    
    long V[7], n, k[4], r[6], t[256];
    int j = 1;
    n = -4;
    for (int i = 1; i<7; i++) 
    r[i] = rand()%10;
    for (int count = 0; count < 4; count ++)
    {
    k[count] = rand()%512;
}
    for (int count_t = 0; count_t < 256; count_t ++){
        t[count_t] = rand()%255;
        cout << "t= " << t[count_t] << "\n";
        }
    
    V[0] = 1;
    V[1] = 3;
    V[2] = 5;
    V[3] = 7;
    V[4] = 21;
    V[5] = 43;
    V[6] = 12;
    V[7] = 17;
    
    genkey (t, k);
    cypher (V,n,k,r,t);
    for(int i = 0; i <=7; i++)
    cout << V[i] << "\t";
    n = -4;
    cout << "\n\n";
    cypher (V,n,k,r,t);
    for(int i = 0; i <=7; i++)
    cout << V[i] << "\t";
    system ("PAUSE");
    
    return 0;
}
 
void cypher (long V[],long n,long k[],long r[],long t[]){
long r1,r2,r3,r4,r5,r6,d,*e,m=0x00ffffff ;
 
r3=k[0] ; r4=k[1] ; r5=k[2] ; r6=k[3] ;
if (n<0) d= -1 ; else d=1 ;
e=V+n ;
while (V-e) {
 r1 = *V ;
 r2 = r1^r6 ;
 *V = r2 ; // Change into r1 for decoding.
 V += d ;
 r3 = r3+r2 ;
 r3 = (r3>>8&m)^t[r3&255] ;
 r4 = r4+r3 ;
 r4 = (r4>>8&m)^t[r4&255] ;
 r5 = r5+r4 ;
 r5 = (r5>>8&m)^t[r5&255] ;
 r6 = r6+r5 ;
 r6 = (r6>>8&m)^t[r6&255] ; }
r[0] =r3 ; r[1]=r4 ; r[2]=r5 ; r[3]=r6 ; }
 
 
void genkey (long t[], long k[]){
long x, z, p ;
static long tt[10]= {
0x726a8f3b,                                 // table
0xe69a3b5c,
0xd3c71fe5,
0xab3c73d2,
0x4d3a8eb3,
0x0396d6e8,
0x3d4c2f7a,
0x9ee27cf3, } ;
for (p=0 ; p<4 ; p++) t[p]=k[p] ;          // copy k
for (p=4 ; p<256 ; p++) {
  x=t[p-4]+t[p-1] ;                        // fill t
  t[p]=x>>3 ^ tt[x&7] ; }
 
for (p=0 ; p<23 ;
 p++) t[p]+=t[p+89] ;           // mix first entries
x=t[33] ; z=t[59] | 0x01000001 ;
z=z&0xff7fffff ;
for (p=0 ; p<256 ; p++) {       //change top byte to
  x=(x&0xff7fffff)+z ;          // a permutation etc
  t[p]=t[p] & 0x00ffffff ^ x ; }
 
t[256]=t[0] ; x&=255 ;
for (p=0 ; p<256 ; p++) {     // further change perm.
  t[p]=t[x=(t[p^x]^x)&255] ;  // and other digits
  t[x]=t[p+1] ;  }     }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2012, 14:52     Алгоритм шифрования WAKE
Посмотрите здесь:

Алгоритм шифрования Рабина C++
C++ Алгоритм шифрования по ГОСТу
C++ Алгоритм шифрования DES
Алгоритм шифрования XTEA C++
C++ Алгоритм шифрования из exe файла
C++ Алгоритм шифрования Anubis
алгоритм шифрования MISTY1 C++
Алгоритм шифрования RSA C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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