Thuật toán Berlekamp-Massey là một thủ tục cho LFSR tổng hợp; nó. tìm thấy ngắn nhất LFSR sẽ tạo ra chuỗi đã cho $s_0, s_1, s_2, \cdots$. thuật toán là lặp đi lặp lại (không đệ quy vì nó không gọi chính nó) ở chỗ nó kiểm tra từng ký hiệu của chuỗi cho đến khi nó xử lý xong toàn bộ chuỗi đã cho. Ở cuối của $i$-lần lặp thứ, thuật toán đã kiểm tra $s_0, s_1, \cdots, s_{i-1}$ (kiểm tra của $s_i, s_{i+1}, \cdots$ vẫn chưa đến) và đã tổng hợp ngắn nhất LFSR sẽ tạo ra $s_0, s_1, \cdots, s_{i-1}$. Sau đó, vào đầu $(i+1)$-lần lặp thứ, thuật toán xác định xem $s_i$ sẽ được tạo bởi LFSR mà nó vừa tìm thấy bằng cách tính toán những gì tiếp theo đầu ra $\hat{s}_i$ sẽ là từ LFSR vừa được tổng hợp và so sánh nó với những gì chúng tôi muốn LFSR để tạo ra, cụ thể là, được cho $s_i$. Sự khác biệt được gọi là sự khác biệt $\delta_i$ và nếu $\delta_i$ xảy ra là khác không, các trước đây-tổng hợp LFSR là cập nhật để LFSR cập nhật sẽ tính toán $s_0, s_1, \cdots, s_{i-1}, {\mathbf s_i}$ (nhấn mạnh thêm). Bản cập nhật này có thể tăng độ dài LFSR và cũng có thể thay đổi các vòi phản hồi hoặc chỉ thay đổi các vòi phản hồi. Có thể chứng minh rằng nếu một lần lặp dẫn đến tăng độ dài LFSR và thay đổi các điểm nhấn, thì ở lần lặp tiếp theo, chỉ các điểm nhấn phản hồi mới có thể thay đổi; LFSR không thể tăng chiều dài.
Nói tóm lại, không cần phải lo lắng về những gì xảy ra với sự khác biệt trước đó; LFSR hiện tại là đảm bảo tạo ra tất cả các trình tự được kiểm tra cho đến nay không có bất kỳ sự khác biệt nào xảy ra trong quá trình tạo.