Cryptography Reference
In-Depth Information
52
if(N < 2*MAXPERIOD)
53
{
fprintf(stderr, "file too short: %d bytes \ n", N);
54
55
exit(1);
56
}
57
Nd = n;
58
/* compute coincidence index */
59
for(period=1; period <= 2*MAXPERIOD; ++period)
60
{
61
kappacnt = 0;
62
for(n = Np = (N/period-1)*period; n--;)
63
kappacnt += buf[n] == buf[n+period];
64
kappa[period-1] = (double)kappacnt/Np;
65
}
66
/* look at frequency peaks */
67
period = -1;
68
for(min = expkappa-PERC; min > PERC; min-=PERC)
69
{
70
n0 = -1;
71
for(n=0; n < 2*MAXPERIOD; ++n)
72
{
73
if(kappa[n] < min) continue;
74
if(n0 < 0) {n0 = n+1; continue;}
75
else if((n+1)%n0) break;
76
}
77
if(n < 2*MAXPERIOD) continue;
78
period = n0; break;
79
}
80
if(period < 0)
Figure 3.13: ( continued )
Search WWH ::




Custom Search