Cryptography Reference
In-Depth Information
84
{
85
cnt += (1 << (blen++ - 1));
86
bits0 = bitoff[k];
87
continue;
88
}
89
else
90
{
91
cnt += (off = (bits-bits0)/blen);
92
off = bits0 + (off+1)*blen;
93
if(bits+8 < off) break;
94
/* (compress-word not determined yet - test
next period) */
95
off = bits+8 - off;
96
/* compose compress-word (from 2 or 3 bytes) */
97
if(off+blen <= 16)
98
{
|
99
cwd = ((buf[n] ^ key[knb0]) << 8)
100
((buf[n-1] ^ key[knb1]));
101
cwd = (cwd >> (16-blen-off)) & blenmsk[blen];
102
}
103
else
104
{
||
105
if(n == 4
(len >= 2 && knb < 2)) break;
106
/* next period */
|
107
cwd = ((buf[n]
key[knb0]) << 16)
|
108
((buf[n-1]
key[knb1]) << 8)
109
((buf[n-2]
key[knb2]));
110
cwd = (cwd >> (24-blen-off)) & blenmsk[blen];
111
}
112
if(cwd > cnt) goto next_val;
/* test
rejected! */
113
break;
/* next period */
114
}
115
}
116
}
117
/* all tests went through for this val, try next key byte
*/
118
tree_search(len, knb+1);
Figure 3.15: ( continued )
Search WWH ::




Custom Search