Download miễn phí Đồ án Nghiên cứu và xây dựng một thuật toán mã hóa thông điệp nhờ kết hợp giữa mật mã chuyển vị và mật mã Vigenere
PHẦN MỞ ĐẦU. 1
CHưƠNG I : CÁC HỆ MẬT MÃ CỔ ĐIỂN. 3
1.1. Mở đầu : . 3
1.2. Mã dịch chuyển. 4
1.3. Mã thay thế . 6
1.4. Mã Apphin . 8
1.5. Mã Vigenere. 10
1.5.1. Định nghĩa: Mã Vigenere(( P , C , K , E , D) . 10
1.5.2. Ví dụ : Cho Khóa k là từ CIPHER , . 10
1.6. Mã Hill. 12
1.7. Mã chuyển vị. 14
1.7.1. Định nghĩa. 14
1.7.2. Ví dụ :. 15
CHưƠNG 2 : Hệ mật . 18
2.1.2 Phương pháp mã hóa :. 18
2.1.3 Phương pháp giải mã :. 19
2.1.4 Phân tích,đánh giá : . 20
2.2.1. Định nghĩa : . 23
2.2.2. Phương pháp mã hóa. 23
2.2.3. Phương pháp giải mã. 24
2.2.4. Phân tích , đánh giá . 26
3.1. Sự kết hợp hai mã chuyển vị và mã Vigenere . 27
3.1.1. Lý thuyết : . 27
3.1.2 Mã hóa . 27
3.1.3 Giải mã. 27
3.2 Chương trình Demo . 28
3.3. Mã nguồn . 30
http://cloud.liketly.com/flash/edoc/web-viewer.html?file=jh2i1fkjb33wa7b577g9lou48iyvfkz6-demo-2018-03-13-do_an_nghien_cuu_va_xay_dung_mot_thuat_toan_ma_hoa_thong_die_vNHqiW5Z3V.png /tai-lieu/do-an-nghien-cuu-va-xay-dung-mot-thuat-toan-ma-hoa-thong-diep-nho-ket-hop-giua-mat-ma-chuyen-vi-va-mat-ma-vigenere-94366/
Để tải tài liệu này, vui lòng Trả lời bài viết, Mods sẽ gửi Link download cho bạn ngay qua hòm tin nhắn.
Ketnooi -
Ai cần tài liệu gì mà không tìm thấy ở Ketnooi, đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí
Tóm tắt nội dung tài liệu:
“nohiteuatybh”
*) Giải mã:
Bước mã hóa sau không thể dùng khóa mà bên A đưa ra nữa,mà ta sẽ phải
tìm khóa nghịch đảo của khóa bên A đưa ra,cụ thể là ta sẽ tìm phép hoán vị
nghịch đảo của π - kí hiệu : π-1
Trở lại với khóa π
i 1 2 3 4 5 6
π 3 5 1 6 4 2
Ta giờ sẽ sắp xếp lại khóa π theo thứ tự tăng dần từ 1 -> 6 ,khi sắp xếp lại
thì chỉ số i sẽ được sắp lại tương ứng,lúc này chỉ số i đó sẽ chính là khóa π-1
i 1 2 3 4 5 6
π-1 3 6 1 5 2 4
Bước 1 : Bên B nhận được bản mã :
“nohiteuatybh”
Thứ tự các bước sẽ lần lượt là :
Trường Đạ i học Dân lập Hả i Phòng
SVTH: Vũ Ngọc Anh- CT1501 Trang 17
y n o h i t e u a t y b h
i 1 2 3 4 5 6 1 2 3 4 5 6
π-1 3 6 1 5 2 4 3 6 1 5 2 4
x h e n t o i t h u b a y
Bước 2 : lấy các kí tự của hàng x ta sẽ thu được đúng bản rõ tương ứng
“hentoithubay”
Trường Đạ i học Dân lập Hả i Phòng
SVTH: Vũ Ngọc Anh- CT1501 Trang 18
CHƢƠNG 2 : Hệ mật mã Vigenege
2.1.
2.1.1.
- Nó được phát minh vào thế kỷ thứ 16 và được viết đầu tiên bởi nhà ngoại
giao Pháp Blaise de Vigenère.
- Mã Vigenere(( P , C , K , E , D)
P = C = K = Z 26
m
Với mỗi k = ( k1,k2,,km) ∈ K ta có :
ek(x1 , x2,, xm) = (x1 + k1,x2 + k2, , xm + km) modulo 26
dk(y1 , y2,, ym) = (y1 - k1,y2 - k2,,ym - km) modulo 26
Giải thích :
C : bản rõ, thường kí hiệu là bản rõ x = x1,x2,x3xn;
D: bản mã,thường kí hiệu là y = y1,y2,y3,,yn;
K: khóa,thường kí hiệu k= k1,k2,k3,,km;
xi ∈ {a,b,c,z} , yi ∈ {a,b,c,z}
2.1.2 Phƣơng pháp mã hóa :
Có bản rõ và khóa ta sẽ biết được n : độ dài bản rõ , và m : độ dài khóa
(m <=n)
Các bước :
Bước 1: Chuyển bản rõ và khóa từ chữ cái sang số { 0 , 1, 2, 3, 4, 25}
Theo quy tắc đã nêu ( a -> 0, b->1 ,c-> 2 z->25)
Bước 2 : Cộng lần lượt các số đúng theo thứ tự của bản rõ với số của khóa
đã quy đổi :
Trường Đạ i học Dân lập Hả i Phòng
SVTH: Vũ Ngọc Anh- CT1501 Trang 19
Trường hợp 1 : nếu m = n, ta tiến hành cộng theo thứ tự bình thường từ trái
sang phải.
Trường hợp 2 : nếu m < n , ta sẽ cần thêm khóa: m = m + (n-m)
Bước 3 : Chuyển đổi ngược lại từ số thành chữ cái để có được bản mã
Ví dụ : Cho bản rõ : “hentoithubay” và khóa k là : “cipher”
Độ dài khóa là 6 ( m =6) – và ta sẽ quy đổi khóa k theo quy tắc đổi kí tự
sang số,nghĩa là k = (2,8,15,7,4,17)
Trường hợp này là trường hợp 2: nghĩa là độ dài m = m + (n – m)
m = 6 + ( 12 – 6) = 12
Bản mã là “jmcaszvpjiep”
2.1.3 Phƣơng pháp giải mã :
Có bản rõ và khóa ta sẽ biết được n : độ dài bản mã , và m : độ dài khóa
(m <=n),bước này sẽ làm ngược lại của pp mã hóa
Các bước :
h e n t o i t h u b a y
X 7 4 13 19 14 8 19 7 20 1 0 24
K 2 8 15 7 4 17 2 8 15 7 4 17
Y 9 12 2 0 18 25 21 15 9 8 4 15
j m c a s z v p j i e p
Trường Đạ i học Dân lập Hả i Phòng
SVTH: Vũ Ngọc Anh- CT1501 Trang 20
Bước 1: Chuyển bản mã và khóa từ chữ cái sang số { 0 , 1, 2, 3, 4, 25}
Theo quy tắc đã nêu ( a -> 0, b->1 ,c-> 2 z->25)
Bước 2 : Trừ lần lượt các số đúng theo thứ tự của bản rõ với số của khóa đã
quy đổi
Bước 3 : Chuyển đổi ngược lại từ số thành chữ cái để có được bản rõ
Ví dụ: Bản mã ta vừa nhận được là : “jmcaszvpjiep” và đã biết khóa k =
“cipher” giờ ta sẽ tiến hành giải mã.việc thực hiện được làm qua bảng sau :
2.1.4 Phân tích,đánh giá :
Độ an toàn của mật mã :
Mã Vigenēre với m = 1 sẽ trở thành mã Dịch chuyển.
Nếu độ dài khóa mà rất nhỏ so với độ dài bản rõ( m << n ) thì có thể thám
mã được. Tập hợp các khoá trong mã Vigenēre với m ≥ 1 có tất cả là 26m
khoá có thể có. Duyệt toàn bộ chừng ấy khoá để thám mã bằng tính tay thì
khó, nhưng với máy tính thì vẫn là điều dễ dàng.Phương pháp thám mã cụ
thể :
j m c a s z v p j i e p
y 9 12 2 0 18 25 21 15 9 8 4 15
k 2 8 15 7 4 17 2 8 15 7 4 17
x 7 4 13 19 14 8 19 7 20 1 0 24
h e n t o i t h u b a y
Trường Đạ i học Dân lập Hả i Phòng
SVTH: Vũ Ngọc Anh- CT1501 Trang 21
Khi người thám mã đã xác định được mã pháp mà Vinegere thì việc tiếp
theo là tìm độ dài khóa( có thể dùng phép thử Kasiski)
Việc xác định độ dài khóa đúng sẽ giúp việc xác định bản rõ qua bảng ma
trận phép thử,với số cột là độ dài khóa.
Giả sử với ví dụ trên: khóa ( CIPHER) có độ dài là 6.
Bước 1: Kẻ thám mã sẽ lập bảng có số cột là 6,và lần lượt đẩy từng kí tự
bản mã vào hàng theo thứ tự của ma trận.
Bước 2: Xác định tần suât của các kí tự xuất hiện trong bản mã theo thứ tự
giảm dần
Bước 3 : Đối chiếu với tần số đặc trưng của ngôn ngữ tiếng Anh tự nhiên
Kí tự Xác suất Kí tự Xác suất Kí tự Xác suất
A .082 J .002 S .063
B .015 K .008 T .091
C .028 L .040 U .028
D .043 M .024 V .010
E .0127 N .067 W .023
F .022 O .075 X .001
G .020 P .019 Y .020
H .061 Q .001 Z .001
I .070 R .060
Từ bảng trên, Beker và Piper phân 26 chữ cái thành 5 nhóm như sau:
E: có xác suất khoảng 1,120
Trường Đạ i học Dân lập Hả i Phòng
SVTH: Vũ Ngọc Anh- CT1501 Trang 22
T, A, O, I, N, S, H, R : mỗi ký tự có xac suất khoảng 0,06 đến 0,09
D, L : mỗi ký tự có xác suất chừng 0,04
C, U, M, W, F, G, Y, P, B: mỗi ký tự có xác suất khoảng 0,015 đến 0,023
V, K, J, X, Q, Z mỗi ký tự có xác suất nhỏ hơn 0,01
Việc xem xét các dãy gồm 2 hay 3 ký tự liên tiếp ( được gọi là bộ đôi -
diagrams và bộ ba - Trigrams )cũng rất hữu ích. 30 bộ đôi thông dụng nhất
( theo hứ tự giảm dần ) là: TH, HE, IN, ER, AN, RE, ED, ON, ES, ST, EN, AT,
TO, NT, HA, ND, OU, EA, NG, AS, OR, TI, IS, ET, IT, AR, TE, SE, HI và OF.
12 bộ ba thông dụng nhất (theo thứ tự giảm dần ) là: THE, ING, AND, HER,
ERE, ENT, THA, NTH, WAS, ETH, FOR và DTH.
Việc tính toán đối chiếu lần lượt các kí tự có tần suất cao ứng với các kí tự
bản mã được lần lượt,sao cho khả năng tạo ra bản rõ có nghĩa hiểu được
Nếu m = n thì mật mã là an toàn.Nhưng độ dài bản rõ càng dài thì độ dài
khóa cũng càng dài => điều này gây khó khăn cho việc trao đổi khóa mã
là rất lớn.
Do đó thay vì tăng độ dài khóa ta sẽ cải tiến nó bằng cách kết hợp với mật
mã chuyển vị nhằm chống lại khả năng tấn công nhằm vào khóa.
Với việc kết hợp như vậy ta sẽ tạo được an toàn bởi qua hai lớp khóa , việc
tìm ra sự kết hợp 2 mã pháp đã gây rất nhiều khó khăn với việc chỉ cần dựa
vào một mật mã đã biết.
Kẻ thám mã lúc này để tìm được chính xác 2 khóa khác nhau cũng là điều
không thể.
Trường Đạ i học Dân lập Hả i Phòng
SVTH: Vũ Ngọc Anh- CT1501 Trang 23
2.2
2.2.1 Định nghĩa :
- Mã Chuyển vị(( P , C , K , E , D)
P = C = Z
m
26, K = Sm với mỗi k = π ∈ Sm , ta có
ek(x1, x2,, xm) = (xπ(1), xπ(2),, xπ(m))
dk(y1, y2,, ym) = ( yπ
( 1 ) , yπ
( 2 ) ,..., yπ ( m ) )
Giải thích :
C : bản rõ, thường kí hiệu là bản rõ x = x1,x2,x3xn;
D: bản mã,thường kí hiệu là y = y1,y2,y3,,yn;
K: khóa,thường kí hiệu k= k1,k2,k3,,km;
xi ∈ {a,b,c,z} , yi ∈ {a,b,c,z}
2.2.2 Phƣơng pháp mã hóa
Có bản rõ và khóa ta sẽ biết được n : độ dài bản rõ , và m : độ dài khóa
(m <=n) . Các bước :
Bước 1 : Lập bảng ma trận có số cột là độ dài khóa k
Bước 2 : Lấy
TH1 : Nếu n m = 0 ( n chia hết cho m) thì số dòng của bảng là
TH2 : Nếu n m != 0 thì số dòng của bảng là + 1
Bước 3 : Lập bảng ma trận theo số hàng và số cột ở bước 1 và bước 2
Chỉ số cột sẽ lần lượt là các số xuất hiện trong khóa
Chỉ số hàng sẽ được đánh số từ 0 đến ( hay
Trường Đạ i học Dân lập Hả i Phòng
SVTH: Vũ Ngọc Anh- CT1501 Trang 24
Bước 4 : Viết bản rõ vào bảng ma trận vừa lập theo thứ tự tự nhiên
Bước 5 : Nhặt các kí tự trong ma trận vừa lập theo cột từ trên xuống và từ
cột bé nhất đến cột lớn nhất theo quy ước của khóa.Kết qua thu được đó chính là
bản mã
Ví dụ : Cho Bản rõ “HENTOITHUBAY” có khóa k = “240531”
Ta có m = 6 , và khóa k được cho bởi hoán vị của π (nghĩa là : các thứ tự
khóa sẽ bị xáo trộn theo 1 trật tự do người mã hóa đặt ra)
Ta dễ dàng xác định được số hàng của ma trận là 2 ( n / m = 12 / 6) và số
cột là 6 ( m = 6)
Ta có bảng ma trận sau:
Chỉ số 2 4 0 5 3 1
1 H E N T O I
2 T H U B A Y
Nhặt các kí tự trong ma trận vừa lập theo cột từ trên xuống và từ cột bé nhất
đến cột lớn nhất theo quy ước của khóa nghĩa là ta lấy từ cột có giá trị 0 -> 1
->->5
NU IY HT OA EH TB
Hợp lại ta có bản mã : “NUIYHTOAEHTB”
2.2.3 Phƣơng pháp giải mã
Có bản rõ và khóa ta sẽ biết được n : độ dài bản mã , và m : độ dài khóa
(m <=n) . Các bước :
Bước 1: Lập bảng ma trận có số cột là độ dài khóa k
Trường Đạ i học Dân lập Hả i Phòng
SVTH: Vũ Ngọc Anh- CT1501 Trang 25
Bước 2 : Lấy
TH1 : Nếu n m = 0 ( n chia hết cho m) thì số dòng của bảng là
TH2 : Nếu n m != 0 thì số dòng của bảng là + 1
Bước 3 : Lập bảng ma trận theo số hàng và số cột ở bước 1 và bước 2
Chỉ số cột sẽ lần lượt là các số xuất hiện trong khóa
Chỉ số hàng sẽ được đánh số từ 0 đến ( hay
Bước 4 : Viết các kí tự trong bản mã theo cột từ trên xuống và từ cột bé
nhất đến cột lớn nhất theo quy ước của khóa.
Bước 5 : Viết bản mã vào bảng ma trận vừa lập theo thứ tự tự nhiên
Kết quả ta sẽ thu được bản ...