Thanh ghi dịch phản hồi tuyến tính (LFSR — Linear Feedback Shift Register) kiểu Fibonacci độ dài L bit là một trong những thành phần cơ bản nhất của mã dòng (stream cipher).
Trạng thái của thanh ghi được biểu diễn bằng L bit, đánh số vị trí 1,2,…,L từ trái sang phải trong chuỗi seed cho trước (vị trí 1 là bit "đầu ra", vị trí L là bit "cuối" của thanh ghi).
Đa thức phản hồi được cho bởi một tập hợp k vị trí tap (mỗi tap là một chỉ số từ 1 đến L).
Tại mỗi bước dịch:
Cho seed ban đầu, danh sách tap và số bit cần sinh m, hãy in ra m bit đầu ra liên tiếp.
Ví dụ: Với L=4, seed = 1000, tap = {4,1}, m=6:
1000 → đầu ra 1, f=s4⊕s1=0⊕1=1 → trạng thái mới 00010001 → đầu ra 0, f=1⊕0=1 → trạng thái mới 0011100011.0/1 (trạng thái ban đầu, vị trí 1 → vị trí L).In ra đúng một dòng gồm m ký tự 0/1 là m bit đầu ra liên tiếp (không có khoảng trắng). Nếu m=0, in ra dòng trống.
Ví dụ:
Đầu vào:
3 0
101
1
3
Đầu ra:
Đầu vào:
4 6
1000
2
4 1
Đầu ra:
100011
Đang tải editor...