Bộ tạo dòng khóa kiểu A5/1 (dùng trong mã hóa GSM) kết hợp ba thanh ghi LFSR Fibonacci R1,R2,R3 (độ dài lần lượt L1,L2,L3) bằng cơ chế xung nhịp bất quy tắc điều khiển theo đa số (majority clocking).
Mỗi thanh ghi Rj có: trạng thái Lj bit ở vị trí 1,…,Lj; danh sách tap riêng (bit phản hồi mới = XOR các bit tại vị trí tap của trạng thái hiện tại, dịch trái rồi chèn bit phản hồi vào vị trí cuối — giống định nghĩa LFSR ở các bài trước); và một vị trí clock tap riêng dùng để quyết định việc dịch.
Tại mỗi bước sinh 1 bit dòng khóa, với trạng thái hiện tại (trước khi dịch bất kỳ thanh ghi nào):
Lặp lại n lần để sinh n bit dòng khóa liên tiếp.
Ví dụ minh họa với ba thanh ghi độ dài 3, clock tap = vị trí 2 cho cả ba: R1: tap={3,1}, seed=110; R2: tap={3,2}, seed=011; R3: tap={3,1}, seed=101. Ở bước 1: bit ra =1⊕0⊕1=0; các bit clock là (1,1,0) nên đa số m=1; chỉ R1,R2 được dịch. Với n=5, kết quả đầy đủ là 01110.
0/1.In ra một dòng gồm n ký tự 0/1 là dòng khóa sinh được. Nếu n=0, in ra dòng trống.
Ví dụ:
Đầu vào:
5
3 2 2 3 1
110
3 2 2 3 2
011
3 2 2 3 1
101
Đầu ra:
01110
Đầu vào:
0
3 2 2 3 1
110
3 2 2 3 2
011
3 2 2 3 1
101
Đầu ra:
Đang tải editor...