Cơ bản nó gồm 3 thanh ghi X, Y, Z.
X có độ dài 6 bit (x0 tới x5)
Y có độ dài 8 bit (y1 tới y7)
Z có độ dài 9 bit (z1 tới z8)
Khóa K có độ dài 23bit.
Phép quay các thanh ghi dùng bitwise XOR – nếu 2 bit giống nhau thì trả về 0, khác nhau thì trả về 1.
Quay X:
+ t = x2 XOR x4 XOR x5.
+ xj = xj-1
+ x0=t
Quay Y:
+ t = y6 XOR y7
+ yi=yi-1
+ y0=t
Quay Z:
+ t = z2 XOR z7 XOR z8
+ zj=zj-1
z0=t
Hàm m=maj(x1,y3,z3)
Nếu x1=m thì quay X
Nếu y3=m thì quay Y
Nếu z3=m thì quay Z
Bit sinh ra sẽ là si= x5 XOR y7 XOR z8
Lấy ví dụ dễ hiểu:
Bản rõ P = 111 (chữ h), khóa K = 100101.01001110.100110000
Step 0: x1=0, y3=0, z3=1 => m=0 nên quay theo X, Y.
+ Ra được X, Y mới, Z giữ nguyên
X=110010
Y= 10100111
Z=100110000
=> si=0 XOR 1 XOR 0 = 1
Step 1:….
[…]
Sau cùng thu được s=100
Bản mã sẽ được tính là: C = 111 XOR 100 = 011 (ra được chữ D).
Cứ như đang ôn thi cuối kỳ ấy nhỉ 😀
LikeLike
Đúng rồi bạn. hihi
LikeLike
bạn có code chạy A5/1 bằng visual k, cho mình xin với
mail mình là:yenanh110299@gmail.com
LikeLike
Mình không có. Nhưng mình tìm được trên mạng có người đã minh họa rồi. Bạn xem thử nhé! https://github.com/NSAPlayset/TWILIGHTVEGETABLE/tree/master/A5.1/C%23/A5
LikeLike
bạn ơi mình có vài khúc mắc bạn có thể giúp mình được không ạ
zalo mình 0765530320
LikeLike
bạn có code C A5/1 giải như ở trênko cho mình xin
LikeLike
Sau cùng thu được s=100
Bản mã sẽ được tính là: C = 111 XOR 100 = 011 (ra được chữ D).
đoạn này mình không biết code sao cho ra… ko biết bạn chỉ mình đuọc ko
LikeLike
Sau cùng thu được s=100
Bản mã sẽ được tính là: C = 111 XOR 100 = 011 (ra được chữ D).
đoạn này mình code mà ko xuất ra được.. ko biết bạn hướng dẫn mình đuọc ko
LikeLike