lfsr.c
1 #include <stdio.h> 2 #include <stdint.h> 3 #include <string.h> 4 5 void lfsr(const uint8_t input[8], uint8_t output[8]) { 6 uint8_t tmp, tmp1; 7 memcpy(output,input,8); 8 for(int i = 0; i<8; i++) { 9 tmp = (output[0] ^ output[4]) >> 1 | (output[1] ^ output[5]) << 7; 10 for(int j = 7; j >= 0; j--) { 11 tmp1 = output[j]; 12 output[j] = tmp; 13 tmp = tmp1; 14 } 15 } 16 } 17 18 int main(void) { 19 uint8_t input[8] = "\x0d\x04\x04\x01\x01\x01\x01"; 20 uint8_t output[8] = {0}; 21 lfsr(input, output); 22 for(int i=0;i<8;i++) printf("%02x", output[i]); 23 printf("\n"); 24 25 return 0; 26 }