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


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




[200]

return (1);

unsigned long clock r1(ctl, r1) int ctl;

unsigned long r1;

unsigned long feedback;

ctl л= ((r1 >> 9) & 0x1);

if (ctl)

feedback = (r1 >> 18) л (r1 >> 17) л (r1 >> 16) л (r1 >> 13);

r1 = (r1 << 1) & 0x7ffff; if (feedback & 0x01)

r1 л= 0x01;

return (r1);

unsigned long clock r2(ctl, r2) int ctl;

unsigned long r2;

unsigned long feedback;

ctl л= ((r2 >> 11) & 0x1);

if (ctl)

feedback = (r2 >> 21) л (r2 >> 20) л (r2 >> 16) л (r2 >> 12);

r2 = (r2 << 1) & 0x3fffff; if (feedback & 0x01)

r2 л= 0x01;

return (r2);

unsigned long clock r3(ctl, r3) int ctl;

unsigned long r3;

unsigned long feedback;

ctl л= ((r3 >> 11) & 0x1);

if (ctl)

feedback = (r3 >> 22) л (r3 >> 21) л (r3 >> 18) л (r3 >> 17);

r3 = (r3 << 1) & 0x7fffff; if (feedback & 0x01)

r3 л= 0x01;

return (r3);

int keystream(key, frame, alice, bob)

unsigned char *key; /* 64 bit session key*/

unsigned long frame; /* 22 bit frame sequence number */ unsigned char *alice; /* 114 bit Alice to Bob key stream */ unsigned char *bob; /* 114 bit Bob to Alice key stream */

unsigned long r1; /* 19 bit shift register */ unsigned long r2; /* 22 bit shift register */


unsigned long r3;/*23 bit shift register */

int i;/*counter for loops*/

int clock ctl;/*xored with clock enable on each shift register */

unsigned char *ptr;/*current position in keystream */

unsigned char byte;/*byte of keystream being assembled */

unsigned int bits;/*number of bits of keystream in byte */

unsigned int bit;/*bit output from keystream generator */

/* Initialise shift registers from session key */

r1 = (key[0] (key[1] << 8) (key[2] << 16) ) & 0x7ffff;

r2 = ((key[2] >> 3) (key[3] << 5) (key[4] << 13) (key[5] << 21)) & 0x3fffff;

r3 = ((key[5] >> 1) (key[6] << 7) (key[7] << 15) ) & 0x7fffff;

/* Merge frame sequence number into shift register state, by xoring it

*into the feedback path */

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

clock ctl = threshold(r1, r2, r2);

r1 = clock r1(clock ctl, r1);

r2 = clock r2(clock ctl, r2);

r3 = clock r3(clock ctl, r3);

if (frame & 1)

r1 л= 1; r2 л= 1; r3 л= 1;

frame = frame >> 1;

/* Run shift registers for 100 clock ticks to allow frame number to

*be diffused into all the bits of the shift registers */

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

clock ctl = threshold(r1, r2, r2); r1 = clock r1(clock ctl, r1); r2 = clock r2(clock ctl, r2); r3 = clock r3(clock ctl, r3);

/* Produce 114 bits of Alice->Bob key stream */ ptr = alice;

bits = 0; byte = 0;

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

clock ctl = threshold(r1, r2, r2); r1 = clock r1(clock ctl, r1); r2 = clock r2(clock ctl, r2); r3 = clock r3(clock ctl, r3);

bit = ((r1 >> 18) л (r2 >> 21) л (r3 >> 22)) & 0x01;

byte = (byte << 1) bit; bits++;


if (bits == 8) {

*ptr = byte; ptr++;

bits = 0; byte = 0;

if (bits)

*ptr = byte;

/* Run shift registers for another 100 bits to hide relationship between * Alice->Bob key stream and Bob->Alice key stream. */

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

clock ctl = threshold(r1, r2, r2); r1 = clock r1(clock ctl, r1); r2 = clock r2(clock ctl, r2); r3 = clock r3(clock ctl, r3);

/* Produce 114 bits of Bob->Alice key stream */ ptr = bob;

bits = 0; byte = 0;

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

clock ctl = threshold(r1, r2, r2); r1 = clock r1(clock ctl, r1); r2 = clock r2(clock ctl, r2); r3 = clock r3(clock ctl, r3);

bit = ((r1 >> 18) л (r2 >> 21) л (r3 >> 22)) & 0x01;

byte = (byte << 1) bit;

bits++;

if (bits == 8)

*ptr = byte; ptr++;

bits = 0; byte = 0;

if (bits)

*ptr = byte; return (0);

void a5 key(a5 ctx *c, char *k){

c->r1 = k[0]<<11k[1]<<3 k[2]>>5; /* 19 */

c->r2 = k[2]<<17k[3]<<9 k[4]<<1 k[5]>>7; /* 22 */ c->r3 = k[5]<<15k[6]<<8 k[7]; /* 23 */

/* Step one bit in A5, return 0 or 1 as output bit. */ int a5 step(a5 ctx *c){ int control;



[стр.Начало] [стр.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]