24/05/2018, 18:11

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

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

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

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:

e K ( x 1 , x 2 , . . . , x m ) = ( x 1 + k 1 , x 2 + k 2 , . . . , x m + k m ) size 12{e rSub { size 8{K} } ( x rSub { size 8{1} } ,x rSub { size 8{2} } , "." "." "." ,x rSub { size 8{m} } ) = ( x rSub { size 8{1} } +k rSub { size 8{1} } ,x rSub { size 8{2} } +k rSub { size 8{2} } , "." "." "." ,x rSub { size 8{m} } +k rSub { size 8{m} } ) } {}

d K ( y 1 , y 2 , . . . , y m ) = ( y 1 − k 1 , y 2 − k 2 , . . . , y m − k m ) size 12{d rSub { size 8{K} } ( y rSub { size 8{1} } ,y rSub { size 8{2} } , "." "." "." ,y rSub { size 8{m} } ) = ( y rSub { size 8{1} } - k rSub { size 8{1} } ,y rSub { size 8{2} } - k rSub { size 8{2} } , "." "." "." ,y rSub { size 8{m} } - k rSub { size 8{m} } ) } {}

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

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

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:

  1. P là tập hữu hạn các bản tin rõ
  2. C là một tập hữu hạn các bản tin đã mã hóa
  3. K là không gian khóa, là tập hữu hạn các khóa
  4. L là tập các dòng khóa
  5. F =(f 1 , f 2, ….) là bộ sinh. Với i>=1: f i : KxP i-1 -> L
  6. 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.
0