Một số hệ mật mã đơn giản
Đặt P = C = K = Z26 size 12{Z rSub { size 8{"26"} } } {}. Với 0≤K≤25 size 12{0 <= K <= "25"} {}, định nghĩa: eK(x)=x+K size 12{e rSub { size 8{K} } ( x ) =x+K} {} mod 26 và dK(y)=y−K size ...
Đặt P=C=K=Z26 size 12{Z rSub { size 8{"26"} } } {}. Với 0≤K≤25 size 12{0 <= K <= "25"} {}, định nghĩa:
eK(x)=x+K size 12{e rSub { size 8{K} } ( x ) =x+K} {} mod 26
và
dK(y)=y−K size 12{d rSub { size 8{K} } ( y ) =y - K} {} mod 26
(x, y size 12{ in } {}Z26 size 12{Z rSub { size 8{"26"} } } {}).
Trường hợp đặc biệt K=3 ứng với hệ mật mã Caesar.
Ví dụ:
Plain: meet me after the toga party
Cipher: PHHW PH DIWHU WKH WRJD SDUWB
Đặt P=C=Z26 size 12{Z rSub { size 8{"26"} } } {}. Với K size 12{K} {} gồm tất cả các hoán vị có thể của 26 ký hiệu 0, 1, …, 25. Với mỗi K size 12{ in } {}K định nghĩa:
eK(x)=K(x) size 12{e rSub { size 8{K} } ( x ) =K ( x ) } {} mod 26
và
dK(y)=K−1(y) size 12{d rSub { size 8{K} } ( y ) =K rSup { size 8{ - 1} } ( y ) } {} mod 26
Trong đó K−1 size 12{K rSup { size 8{ - 1} } } {} là hoán vị ngược của K.
Đặt P=C= Z26 size 12{Z rSub { size 8{"26"} } } {} và đặt
K={(a, b) size 12{ in } {}Z26 size 12{Z rSub { size 8{"26"} } } {}X Z26 size 12{Z rSub { size 8{"26"} } } {}: gcd(a, 26)=1}.
Với K=(a, b) size 12{ in } {}K, định nghĩa:
eK(x)=ax+b size 12{e rSub { size 8{K} } ( x ) = ital "ax"+b} {} mod 26
và
dK(y)=a−1(y−b) size 12{d rSub { size 8{K} } ( y ) =a rSup { size 8{ - 1} } ( y - b ) } {} mod 26
(x, y size 12{ in } {}Z26 size 12{Z rSub { size 8{"26"} } } {}).
Trong đó a−1 size 12{a rSup { size 8{ - 1} } } {} size 12{ in } {}Z26 size 12{Z rSub { size 8{"26"} } } {}, sao cho aa−1≡a−1a≡1(mod26) size 12{ ital "aa" rSup { size 8{ - 1} } equiv a rSup { size 8{ - 1} } a equiv 1 ( "mod""26" ) } {}.
Ví dụ:
K=(7, 3)
Giải thuật Euclid mở rộng:
Tính phần tử nghịch đảo: a-1
1. n0 = n
2. a0 = a
3. t0 = 0
4. t = 1
5. q = n0a0 size 12{ left lfloor { {n rSub { size 8{0} } } over {a rSub { size 8{0} } } } right rfloor } {}
6. r = n0 – q x a0
7. while r > 0 do
8. temp = t0 – q x t
9. If temp size 12{ >= {}} {} 0 then temp = temp mod n
10. If temp < 0 then temp = n – ((-temp) mod n)
11. t0 = t
12. t = temp
13. n0 = a0
14. a0 = r
15. q = n0a0 size 12{ left lfloor { {n rSub { size 8{0} } } over {a rSub { size 8{0} } } } right rfloor } {}
16. r = n0 – q x a0
17. if a0 size 12{ <> } {} 1 then
a không có nghịch đảo
else
a-1 = t mod n
Đặt m là một số nguyên dương. Định nghĩa P=C=K= (Z26)m size 12{ ( Z rSub { size 8{"26"} } ) rSup { size 8{m} } } {}. Với một khóa K=( k1,k2,...,km size 12{k rSub { size 8{1} } ,k rSub { size 8{2} } , "." "." "." ,k rSub { size 8{m} } } {}), chúng ta định nghĩa:
và
Trong đó các phép +, - được thực hiện trên trường Z26 size 12{Z rSub { size 8{"26"} } } {}.
Đặt m là một số nguyên dương. Đặt P=C=( Z26 size 12{Z rSub { size 8{"26"} } } {})m và đặt
K={m x m là ma trận khả nghịch trên Z26 size 12{Z rSub { size 8{"26"} } } {}}.
Với K size 12{ in } {}K, định nghĩa:
eK(x)=xK size 12{e rSub { size 8{K} } ( x ) = ital "xK"} {} mod 26
và
dK(y)=yK−1 size 12{d rSub { size 8{K} } ( y ) = ital "yK" rSup { size 8{ - 1} } } {} mod 26
(x, y size 12{ in } {}Z26 size 12{Z rSub { size 8{"26"} } } {}).
Trong đó: KK-1 = Imvới Imlà ma trận đơn vị.
Ví dụ: Với m=2; K= 31178 size 12{ left ( {} cSub { size 8{3} } cSup { size 8{"11"} } {} cSub { size 8{7} } cSup { size 8{8} } right )} {}, K-1= 2371118 size 12{ left ( {} cSub { size 8{"23"} } cSup { size 8{7} } {} cSub { size 8{"11"} } cSup { size 8{"18"} } right )} {}
có x=(9, 20), xK=(3, 4); có x=(11, 24), xK=(11, 22);
Đặt m là một số nguyên dương. Đặt P=C=( Z26 size 12{Z rSub { size 8{"26"} } } {})m và đặt K là tập tất cả các hoán vị của tập {1, …, m}. Với K size 12{ in } {}K, định nghĩa:
eK(x1,...,xm)=(xK(1),...,xK(m)) size 12{e rSub { size 8{K} } ( x rSub { size 8{1} } , "." "." "." ,x rSub { size 8{m} } ) = ( x rSub { size 8{K ( 1 ) } } , "." "." "." ,x rSub { size 8{K ( m ) } } ) } {} mod 26
và
dK(y1,...,ym)=(yK−1(1),...,yK−1(m)) size 12{d rSub { size 8{K} } ( y rSub { size 8{1} } , "." "." "." ,y rSub { size 8{m} } ) = ( y rSub { size 8{K rSup { size 6{ - 1} } ( 1 ) } } , "." "." "." ,y rSub {K rSup { size 6{ - 1} } ( m ) } size 12{ ) }} {} mod 26
Trong đó K−1 size 12{ size 8{K rSup { size 6{ - 1} } }} {} là hoán vị ngược của K size 12{ size 8{K}} {}.
Định nghĩa
Một hệ mã dòng là một bộ 7 (P, C, K, L, F,ε size 12{ε} {},D), thỏa mãn các điều kiện sau đây:
- P là tập hữu hạn các bản tin rõ
- C là một tập hữu hạn các bản tin đã mã hóa
- K là không gian khóa, là tập hữu hạn các khóa
- L là tập các dòng khóa
- F =(f 1 , f 2, ….) là bộ sinh. Với i>=1: f i : KxP i-1 -> L
- Với mỗi z size 12{ in } {}<L, tồn tại một giải thuật mã hóa ez∈ size 12{e rSub { size 8{z} } in } {}ε size 12{ε} {}và một giải thuật giải mã dz∈ size 12{d rSub { size 8{z} } in } {}D. Trong đó: ez: size 12{e rSub { size 8{z} } :} {}P→ size 12{ rightarrow } {}C và dz: size 12{d rSub { size 8{z} } :} {}C→ size 12{ rightarrow } {}P là các hàm sao cho dz(ez(x))=x size 12{d rSub { size 8{z} } ( e rSub { size 8{z} } ( x ) ) =x} {} với mọi x size 12{ in } {}P.