Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[201]

control = threshold(c->r1,c->r2,c->r3); c->r1 = clock r1(control,c->r1); c->r2 = clock r2(control,c->r2); c->r3 = clock r3(control,c->r3); return( (c->r1Ac->r2Ac->r3)&1);

/* Encrypts a buffer of len bytes. */

void a5 encrypt(a5 ctx *c, char *data, int len){

int i,j;

char t;

for(i=0;i<len;i++){

for(j=0;j<8;j++) t = t<<1 a5 step(c); data[i]A=t;

void a5 decrypt(a5 ctx *c, char *data, int len){ a5 encrypt(c,data,len);

void main(void){ a5 ctx c;

char data[100];

char key[] = {1,2,3,4,5,6,7,8};

int i,flag;

for(i=0;i<100;i++) data[i] = i;

a5 key(&c,key); a5 encrypt(&c,data,100);

a5 key(&c,key);

a5 decrypt(&c,data,1);

a5 decrypt(&c,data+1,99);

flag = 0;

for(i=0;i<100;i++) if(data[i]!=i)flag = 1; if(flag)printf("Decrypt failed\n"); else printf("Decrypt succeeded\n");

#undef SEAL DEBUG #define ALG OK 0

#define ALG NOTOK 1

#define WORDS PER SEAL CALL 1024

typedef struct {

unsigned long t[520]; /* 512 rounded up to a multiple of 5 + 5*/ unsigned long s[265]; /* 256 rounded up to a multiple of 5 + 5*/ unsigned long r[20]; /* 16 rounded up to multiple of 5 */ unsigned long counter; /* 32-bit synch value. */

unsigned long ks buf[WORDS PER SEAL CALL];

int ks pos; } seal ctx;


#defineROT2(x) (((x) >> 2) ((x) << 30))

#defineROT9(x) (((x) >> 9) ((x) << 23))

#defineROT8(x) (((x) >> 8) ((x) << 24))

#defineROT16(x) (((x) >> 16) ((x) << 16))

#defineROT24(x) (((x) >> 24) ((x) << 8))

#defineROT27(x) (((x) >> 27) ((x) << 5))

#defineWORD(cp) ((cp[0] << 24)(cp[1] << 16)(cp[2] << 8)(cp[3]))

#defineF1(x,y,z)(((x) & (y)) ((~(x)) & (z)))

#defineF2(x,y,z)((x)A(y)A(z))

#defineF3(x,y,z)(((x) & (y)) ((x) & (z)) ((y) & (z)))

#defineF4(x,y,z)((x)A(y)A(z))

int g(in, i, h) unsigned char *in; int i;

unsigned long *h;

unsigned long h0; unsigned long h1; unsigned long h2; unsigned long h3; unsigned long h4; unsigned long a; unsigned long b; unsigned long c; unsigned long d; unsigned long e; unsigned char *kp; unsigned long w[80]; unsigned long temp;

kp = in;

h0 = WORD(kp);kp += 4;

h1 = WORD(kp);kp += 4;

h2 = WORD(kp);kp += 4;

h3 = WORD(kp);kp += 4;

h4 = WORD(kp);kp += 4;

w[0] = i;

for (i=1;i<16;i++)

w[i] = 0;

for (i=16;i<80;i++)

w[i] = w[i-3]Aw[i-8]Aw[i-14]Aw[i-16];

a = h0;

b = h1;

c = h2;

d = h3;

e = h4;

for (i=0;i<20;i++) {

temp = ROT27(a) + F1(b, c, d) + e + w[i] + 0x5a827999; e = d; d = c;

c = ROT2(b);

b = a; a = temp;


for (i=20;i<40;i++) {

temp = ROT27(a) + F2(b, c, d) + e + w[i] + 0x6ed9eba1; e = d; d = c;

c = ROT2(b);

b = a; a = temp;

for (i=40;i<60;i++) {

temp = ROT27(a) + F3(b, c, d) + e + w[i] + 0x8f1bbcdc;

e = d; d = c;

c = ROT2(b);

b = a; a = temp;

for (i=60;i<80;i++) {

temp = ROT27(a) + F4(b, c, d) + e + w[i] + 0xca62c1d6;

e = d; d = c;

c = ROT2(b);

b = a; a = temp;

h[0] = h0+a; h[1] = h1+b; h[2] = h2+c; h[3] = h3+d; h[4] = h4+e;

return (ALG OK);

unsigned long gamma(a, i) unsigned char *a; int i;

unsigned long h[5];

(void) g(a, i/5, h); return h[i % 5];

int seal init(seal ctx *result, unsigned char *key)

unsigned long h[5];

for (i=0;i<510;i+=5)

g(key, i/5, &(result->t[i])); /* horrible special case for the end */

g(key, 510/5, h);

for (i=510;i<512;i++)

result->t[i] = h[i-510];

/* 0x1000 mod 5 is +1, so have horrible special case for the start */

g(key, (-1+0x1000)/5, h); for (i=0;i<4;i++)

result->s[i] = h[i+1]; for (i=4;i<254;i+=5)



[стр.Начало] [стр.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] [стр.98] [стр.99] [стр.100] [стр.101] [стр.102] [стр.103] [стр.104] [стр.105] [стр.106] [стр.107] [стр.108] [стр.109] [стр.110] [стр.111] [стр.112] [стр.113] [стр.114] [стр.115] [стр.116] [стр.117] [стр.118] [стр.119] [стр.120] [стр.121] [стр.122] [стр.123] [стр.124] [стр.125] [стр.126] [стр.127] [стр.128] [стр.129] [стр.130] [стр.131] [стр.132] [стр.133] [стр.134] [стр.135] [стр.136] [стр.137] [стр.138] [стр.139] [стр.140] [стр.141] [стр.142] [стр.143] [стр.144] [стр.145] [стр.146] [стр.147] [стр.148] [стр.149] [стр.150] [стр.151] [стр.152] [стр.153] [стр.154] [стр.155] [стр.156] [стр.157] [стр.158] [стр.159] [стр.160] [стр.161] [стр.162] [стр.163] [стр.164] [стр.165] [стр.166] [стр.167] [стр.168] [стр.169] [стр.170] [стр.171] [стр.172] [стр.173] [стр.174] [стр.175] [стр.176] [стр.177] [стр.178] [стр.179] [стр.180] [стр.181] [стр.182] [стр.183] [стр.184] [стр.185] [стр.186] [стр.187] [стр.188] [стр.189] [стр.190] [стр.191] [стр.192] [стр.193] [стр.194] [стр.195] [стр.196] [стр.197] [стр.198] [стр.199] [стр.200] [стр.201] [стр.202] [стр.203]