Blog literacki, portal erotyczny - seks i humor nie z tej ziemi


/*
Author: Pate Williams (c) 1997

The following code tests an implementation of
the Berlekamp-Massey algorithm for finding the
linear complexity of a finite binary sequence.
This is useful in analyzing linear feedback
shift registers (LFSRs). See "Handbook of
Applied Cryptography" by Alfred J. Menezes et
al 6.30 Algorithm page 201.
*/

#include
#include

long BerlekampMassey(char *s, long n, long *C)
/* returns the linear complexity of the finite
binary sequence s of length n */
{
long L = 0, N = 0, d, e, i, m = - 1, n1 = n + 1, sum;
long dB = 0, dC = 0, dT;
long *B = malloc(n1 * sizeof(long));
long *D = malloc(n1 * sizeof(long));
long *T = malloc(n1 * sizeof(long));

for (i = 1; i < n1; i++) B[i] = C[i] = T[i] = 0;
T[0] = 0;
C[0] = B[0] = 1;
while (N < n) {
sum = 0;
for (i = 1; i <= L; i++) sum += C[i] * s[N - i];
d = (s[N] + sum) & 1l;
if (d == 1) {
dT = dC;
for (i = 0; i <= dT; i++) T[i] = C[i];
e = N - m;
for (i = 0; i < e; i++) D[i] = 0;
for (i = 0; i <= dB; i++) D[i + e] = B[i];
D[e] = 1;
for (i = 0; i <= dB + e; i++)
C[i] = (C[i] + D[i]) & 1l;
if (dB + e > dC) dC = dB + e;
if (L <= N / 2) {
dB = dT;
for (i = 0; i <= dB; i++) B[i] = T[i];
L = N + 1 - L, m = N;
}
}
printf("s = %ld d = %ld T = ", s[N], d);
for (i = 0; i <= L; i++) printf("%ld ", T[i]);
printf("C = ");
for (i = 0; i <= L; i++) printf("%ld ", C[i]);
printf("L = %ld m = %ld B = ", L, m);
for (i = 0; i <= L; i++) printf("%ld ", B[i]);
printf("%ld\n", N);
N++;
}
free(B);
free(D);
free(T);
return L;
}

void main(void)
{
char s[9] = {0, 0, 1, 1, 0, 1, 1, 1, 0};
long C[10], i, n = 9, L = BerlekampMassey(s, n, C);

printf("linear complexity: %ld\n", L);
printf("polynomial: ");
for (i = 0; i <= L; i++) printf("%ld ", C[i]);
}
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • qualintaka.pev.pl
  •