



















Preview text:
  lOMoAR cPSD| 60701415
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á 
KHOA CÔNG NGHỆ THÔNG TIN    BÀI TẬP LỚN 
HỌC PHẦN: AN TOÀN BẢO MẬT THÔNG TIN 
Học kỳ: I Năm học: 2025 – 2026 
Lớp Tín chỉ: ATBMTT.03.K14.09.LH.C04.1_LT 
ĐỀ 4: NGHIÊN CỨU VỀ MÃ HÓA VÀ GIẢI MÃ AFFINE 
TRONG ỨNG DỤNG TRUYỀN NHẬN THÔNG TIN 
 Giảng viên giảng dạy: Lương Thái Lê 
Danh sách sinh viên thực hiện:  TT  Mã sinh viên 
Sinh viên thực hiện  Lớp hành chính  1  20220111  Trần Việt Đức  DCCNTT14.9  2  20233258  Nguyễn Thị Khanh  DCCNTT14.9  3  20233420  Nguyễn Thị Kim Oanh  DCCNTT14.9  4  20233453  Đỗ Phát Đạt  DCCNTT14.9  5  20233440  Doãn Hồng Đăng  DCCNTT14.9  Bắc Ninh, năm 2025      lOMoAR cPSD| 60701415 LỜI NÓI ĐẦU 
Trong thời đại công nghệ thông tin phát triển mạnh mẽ, vấn đề bảo mật thông tin ngày 
càng trở nên quan trọng và cấp thiết. Thông tin khi được truyền đi qua các hệ thống mạng 
máy tính, mạng viễn thông hoặc các kênh truyền khác luôn đứng trước nguy cơ bị nghe 
lén, sao chép hoặc chỉnh sửa trái phép. Do vậy, việc nghiên cứu các phương pháp mã hóa 
và giải mã thông tin nhằm đảm bảo tính bí mật, toàn vẹn và xác thực là một trong những 
nội dung trọng tâm của lĩnh vực an toàn thông tin. 
Trong lịch sử phát triển của mật mã học, nhiều phương pháp mã hóa cổ điển đã ra đời, 
đóng vai trò nền tảng cho sự hình thành và phát triển của các thuật toán mã hóa hiện đại. 
Một trong số đó là mã hóa Affine (Affine Cipher) – một dạng mật mã thay thế đơn giản 
nhưng có cơ sở toán học rõ ràng. Thuật toán Affine sử dụng phép biến đổi tuyến tính trên 
các ký tự, kết hợp giữa nhân và cộng trong số học modulo để tạo ra bản mã từ bản rõ. Đây 
là phương pháp đơn giản nhưng lại mang ý nghĩa quan trọng trong việc giúp người học 
nắm vững nguyên lý của mật mã cổ điển, từ đó làm cơ sở tiếp cận các hệ mã hiện đại. 
Đề tài “Nghiên cứu về mã hóa và giải mã Affine trong ứng dụng truyền nhận thông tin” 
được thực hiện với mục tiêu: 
Tìm hiểu cơ sở lý thuyết của hệ mã Affine. 
Phân tích các bước mã hóa và giải mã dựa trên công thức toán học. 
Xây dựng chương trình thử nghiệm mã hóa - giải mã bằng Affine. 
Ứng dụng vào mô phỏng quá trình truyền nhận thông tin có bảo mật giữa hai bên gửi nhận. 
Việc nghiên cứu đề tài không chỉ giúp người thực hiện nắm bắt kiến thức về toán học trong 
mật mã, mà còn hiểu được mối liên hệ giữa lý thuyết và ứng dụng thực tế trong lĩnh vực 
bảo mật dữ liệu. Đây cũng là bước khởi đầu quan trọng để tiếp cận các hệ mã hiện đại như 
DES, AES, RSA, vốn đang được sử dụng rộng rãi trong các hệ thống thông tin trên toàn  cầu.      lOMoAR cPSD| 60701415
Trong quá trình thực hiện, mặc dù đã cố gắng tìm hiểu và trình bày một cách chi tiết, song 
do hạn chế về thời gian và kiến thức, bài báo cáo chắc chắn không tránh khỏi thiếu sót. 
Nhóm rất mong nhận được sự góp ý của thầy cô và bạn bè để hoàn thiện đề tài tốt hơn. 
Xin chân thành cảm ơn sự hướng dẫn tận tình của thầy/cô giảng viên bộ môn cùng sự hỗ 
trợ từ bạn bè trong quá trình học tập và nghiên cứu, giúp nhóm em hoàn thành bài báo cáo  này.        lOMoAR cPSD| 60701415 MỤC LỤC 
LỜI NÓI ĐẦU..................................................................................................................2 
MỤC LỤC.........................................................................................................................4 
BẢNG PHÂN CÔNG........................................................................................................6 
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI...............................................7 
1.1. Bối cảnh và lý do chọn đề tài.................................................................................7 
1.2. Mục tiêu và nội dung nghiên cứu..........................................................................8 
1.3. Mục đích của đề tài................................................................................................8 
1.4. Ý nghĩa khoa học và thực tiễn...............................................................................9 
1.5. Phạm vi, phương pháp nghiên cứu.......................................................................9 
CHƯƠNG 2: GIỚI THIỆU THUẬT TOÁN MÃ HÓA VÀ GIẢI MÃ AFFINE......11 
2.1. Tổng quan về mật mã học cổ điển.........................................................................11 
2.2. Giới thiệu đầu vào – đầu ra của bài toán..............................................................11 
2.3. Cơ sở lý thuyết.......................................................................................................12 
2.3.1. Lý thuyết về mật mã Affine Cipher..............................................................................12 
2.3.2. Số học Mô-đun và Vành số nguyên Zm.......................................................................12 
2.3.3. Hàm mã hóa và giải mã...............................................................................................13 
2.3.4. Ví dụ cụ thể..................................................................................................................13 
2.3.4. Tính chất toán học của hàm Affine..............................................................................14 
2.5. Phân tích hệ mã Affine..........................................................................................15 
2.5.1. Ưu điểm........................................................................................................................15 
2.5.2. Hạn chế và lỗ hổng bảo mật........................................................................................15 
CHƯƠNG 3. CÀI ĐẶT CHƯƠNG TRÌNH.................................................................17 
3.1. Giới thiệu về chương trình....................................................................................17 
3.2. Giới thiệu về ngôn ngữ chính được sử dụng trong đề tài......................................17 
3.2.1. Ngôn ngữ lập trình C# – "Bộ não" của Ứng dụng......................................................18 
3.2.2. Windows Forms – "Bộ mặt" của Ứng dụng.................................................................19      lOMoAR cPSD| 60701415
3.2.3. Sự cộng hưởng giữa C# và WinForms........................................................................20 
3.3 Giao diện phần mềm..............................................................................................20 
3.3.1. Giao diện trang Đăng nhập.........................................................................................20 
3.3.2. Giao diện chính của chương trình...............................................................................21 
3.3.3. Trang hướng dẫn sử dụng............................................................................................22 
KẾT LUẬN.....................................................................................................................23 
1. Tổng kết các kết quả đạt 
được..................................................................................23 
2. Đánh giá ưu điểm và nhược 
điểm.............................................................................23 
2.1. Ưu điểm...........................................................................................................................23 
2.2. Nhược điểm.....................................................................................................................24 
3. Hướng phát triển trong tương 
lai.............................................................................24 TÀI LIỆU THAM 
KHẢO.............................................................................................26        lOMoAR cPSD| 60701415 BẢNG PHÂN CÔNG  ST  Tên  Công việc  T  1  Trần Việt Đức    2  Nguyễn Thị Khanh    3  Nguyễn Thị Kim Oanh    4  Đỗ Phát Đạt    5  Doãn Hồng Đăng            lOMoAR cPSD| 60701415
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI 
1.1. Bối cảnh và lý do chọn đề tài 
Trong bối cảnh của cuộc Cách mạng Công nghiệp lần thứ tư, thông tin đã trở thành một 
dạng tài sản vô giá và là yếu tố cốt lõi quyết định sự thành công của các tổ chức, doanh 
nghiệp cũng như cá nhân. Dữ liệu được trao đổi liên tục trên các hạ tầng mạng phức tạp, 
từ mạng Internet toàn cầu đến các hệ thống mạng nội bộ và thiết bị di động, mang lại những 
lợi ích to lớn về hiệu suất và khả năng kết nối. Tuy nhiên, sự phát triển này cũng đồng thời 
tạo ra những thách thức chưa từng có về an toàn và bảo mật thông tin. Dữ liệu trong quá 
trình truyền nhận luôn phải đối mặt với các nguy cơ bị truy cập, nghe lén, sao chép hoặc 
thay đổi trái phép từ các tác nhân có chủ đích xấu. 
Để đối phó với những rủi ro này, Mật mã học (Cryptography) đã ra đời và phát triển như 
một ngành khoa học chuyên nghiên cứu các phương pháp bảo vệ thông tin. Lịch sử mật 
mã học có thể được chia thành hai giai đoạn chính: mật mã học cổ điển và mật mã học hiện 
đại. Trong khi các hệ mã hiện đại như AES, RSA được xây dựng trên các cấu trúc toán học 
phức tạp và có khả năng chống lại các cuộc tấn công bằng máy tính lượng tử, thì các hệ 
mã cổ điển vẫn giữ một vai trò không thể thiếu trong lĩnh vực giáo dục và nghiên cứu. 
Mã hóa Affine (Affine Cipher) là một đại diện tiêu biểu của trường phái mật mã cổ điển, 
thuộc lớp mật mã thay thế đơn bảng (Monoalphabetic Substitution Cipher). Dù không còn 
được sử dụng trong các ứng dụng đòi hỏi bảo mật cao, việc nghiên cứu mã Affine mang 
lại giá trị học thuật to lớn. Nó là một cầu nối lý tưởng, giúp người học chuyển tiếp từ những 
khái niệm mật mã sơ khai đến việc nắm bắt các nguyên lý toán học nền tảng như số học 
mô-đun (modular arithmetic), tính khả nghịch của một phần tử trong một vành hữu hạn, 
và vai trò của ước chung lớn nhất (GCD) trong việc đảm bảo tính toàn vẹn của quá trình 
giải mã. Vì những lý do trên, việc thực hiện đề tài 
“Nghiên cứu về mã hóa và giải mã AFFINE trong ứng dụng truyền nhận thông tin” là hoàn 
toàn cần thiết và phù hợp, không chỉ để hoàn thành học phần mà còn để xây dựng một nền 
tảng kiến thức vững chắc cho các lĩnh vực chuyên sâu hơn về an toàn thông tin.      lOMoAR cPSD| 60701415
1.2. Mục tiêu và nội dung nghiên cứu 
Đề tài được thực hiện nhằm đạt được các mục tiêu chính sau đây: 
+ Nghiên cứu và hệ thống hóa cơ sở lý thuyết: Phân tích sâu sắc nền tảng toán học và 
nguyên lý hoạt động của hệ mã Affine. Trọng tâm là làm rõ các khái niệm về hàm biến đổi 
tuyến tính trên vành số nguyên Zm, điều kiện tồn tại nghịch đảo mô-đun và thuật toán  Euclid mở rộng. 
+ Thiết kế và cài đặt thuật toán: Xây dựng các thuật toán mã hóa và giải mã Affine một 
cách hoàn chỉnh và hiệu quả bằng ngôn ngữ lập trình. Chương trình phải có khả năng xử 
lý chuỗi ký tự, kiểm tra tính hợp lệ của khóa và đảm bảo tính chính xác của kết quả. 
+ Xây dựng ứng dụng minh họa: Phát triển một ứng dụng phần mềm mô phỏng quá trình 
truyền nhận thông tin an toàn giữa hai bên (bên gửi và bên nhận) sử dụng mã Affine. Ứng 
dụng này phục vụ như một công cụ trực quan để kiểm chứng lý thuyết và thuật toán đã  nghiên cứu. 
+ Phân tích và đánh giá: Đưa ra những đánh giá khách quan về ưu điểm, nhược điểm và độ 
an toàn của hệ mã Affine trong bối cảnh lý thuyết mật mã hiện đại. So sánh hiệu quả của 
Affine với các hệ mã cổ điển khác như Caesar và Vigenère để làm nổi bật vị trí và đặc điểm  của nó. 
1.3. Mục đích của đề tài 
Đề tài này hướng đến việc nghiên cứu chuyên sâu về phương pháp mã hóa và giải mã 
Affine, từ lý thuyết nền tảng đến ứng dụng thực tiễn trong quá trình truyền nhận thông tin. 
Cụ thể, các mục tiêu chính bao gồm: 
+ Phân tích nguyên lý hoạt động của mã hóa Affine dựa trên cơ sở toán học của hàm tuyến 
tính trong tập hợp số nguyên modulo. 
+ Xây dựng quy trình mã hóa và giải mã Affine một cách hệ thống, có thể áp dụng cho các  chuỗi ký tự bất kỳ. 
+ Đánh giá tính bảo mật của phương pháp Affine trong bối cảnh hiện đại, so sánh với các 
phương pháp mã hóa khác.      lOMoAR cPSD| 60701415
+ Đề xuất một số ứng dụng cụ thể của Affine trong truyền nhận thông tin, đặc biệt là trong 
các hệ thống giáo dục, truyền thông nội bộ hoặc các hệ thống có yêu cầu bảo mật thấp. 
1.4. Ý nghĩa khoa học và thực tiễn 
Về mặt khoa học, nghiên cứu này góp phần làm rõ hơn các nguyên lý toán học đằng 
sau một phương pháp mã hóa cổ điển, từ đó tạo nền tảng cho việc tiếp cận các thuật toán 
mã hóa phức tạp hơn như RSA, AES hay ECC. Việc hiểu rõ Affine cũng giúp người học 
nắm bắt được bản chất của các phép biến đổi tuyến tính, một khái niệm quan trọng trong 
nhiều lĩnh vực như mật mã học, xử lý tín hiệu, học máy và trí tuệ nhân tạo. 
Về mặt thực tiễn, phương pháp mã hóa Affine có thể được ứng dụng trong các hệ thống 
truyền thông đơn giản, nơi yêu cầu bảo mật không quá cao nhưng vẫn cần đảm bảo tính 
riêng tư và tính toàn vẹn của dữ liệu. Ngoài ra, Affine còn có thể được sử dụng trong các 
trò chơi giáo dục, phần mềm học tập hoặc các ứng dụng mang tính minh họa cho sinh viên 
ngành công nghệ thông tin, toán học ứng dụng và an toàn thông tin. 
1.5. Phạm vi, phương pháp nghiên cứu 
Phạm vi nghiên cứu của đề tài tập trung vào: 
+ Mã hóa và giải mã Affine trên tập ký tự tiếng Anh (ASCII), có thể mở rộng sang Unicode  nếu cần. 
+ Ứng dụng Affine trong môi trường truyền nhận thông tin giả lập, ví dụ như giữa hai máy 
tính hoặc qua giao diện web đơn giản. 
+ Đánh giá hiệu năng và độ bảo mật của Affine thông qua phân tích lý thuyết và thử nghiệm  thực tế. 
+ Phương pháp nghiên cứu bao gồm: phân tích tài liệu tổng hợp các công trình nghiên cứu 
liên quan đến mã hóa Affine và các phương pháp mã hóa cổ điển.  Phương pháp nghiên cứu: 
Nghiên cứu tài liệu, giáo trình, sách và tài nguyên trực tuyến về mật mã học. 
Viết thuật toán mô phỏng bằng lập trình.      lOMoAR cPSD| 60701415
Thử nghiệm thực tế: truyền nhận thông tin giữa hai hệ thống giả lập để kiểm tra tính hiệu 
quả và độ chính xác của thuật toán. 
Đánh giá và so sánh: phân tích ưu nhược điểm của Affine so với các phương pháp mã hóa 
khác như Caesar, Vigenère, hoặc các thuật toán hiện đại.        lOMoAR cPSD| 60701415
CHƯƠNG 2: GIỚI THIỆU THUẬT TOÁN MÃ HÓA VÀ GIẢI  MÃ AFFINE 
2.1. Tổng quan về mật mã học cổ điển 
Mật mã học cổ điển là thuật ngữ dùng để chỉ các hệ thống mật mã được phát triển và 
sử dụng từ thời cổ đại cho đến trước khi máy tính kỹ thuật số ra đời (khoảng đầu thế kỷ 
20). Các hệ mã này chủ yếu hoạt động dựa trên các thao tác đơn giản với ký tự và không 
đòi hỏi các tính toán phức tạp. Chúng được phân thành hai loại chính: 
Mã hóa thay thế (Substitution Ciphers): Nguyên tắc cơ bản là thay thế mỗi ký tự hoặc nhóm 
ký tự trong bản rõ bằng một ký tự hoặc nhóm ký tự khác theo một quy tắc nhất định. 
Mã thay thế đơn bảng (Monoalphabetic): Một quy tắc thay thế duy nhất được áp dụng cho 
toàn bộ thông điệp. Ví dụ điển hình là 
Mã Caesar (quy tắc là phép cộng) và mã Affine (quy tắc là một hàm tuyến tính). 
Mã thay thế đa bảng (Polyalphabetic): Sử dụng nhiều quy tắc thay thế khác nhau một cách  tuần hoàn. 
Mã Vigenère là ví dụ nổi tiếng nhất, giúp khắc phục điểm yếu về phân tích tần suất của mã  đơn bảng. 
Mã hóa hoán vị (Transposition Ciphers): Nguyên tắc là giữ nguyên các ký tự trong bản rõ 
nhưng sắp xếp lại vị trí của chúng theo một quy tắc hoán vị xác định. 
Mã hóa Affine, đối tượng nghiên cứu của đề tài này, được xem là một sự cải tiến và tổng 
quát hóa của mã Caesar, mang đến một không gian khóa lớn hơn và cấu trúc toán học thú  vị hơn. 
2.2. Giới thiệu đầu vào – đầu ra của bài toán 
Để xây dựng một chương trình mã hóa và giải mã theo thuật toán Affine Cipher, trước 
hết cần xác định rõ đầu vào và đầu ra của bài toán:  - Đầu vào: 
+ Bản rõ (Plaintext): chuỗi ký tự thông tin cần mã hóa.      lOMoAR cPSD| 60701415
+ Khóa bí mật (Key): gồm hai thành phần: 
+ a: hệ số nhân (phải thỏa mãn điều kiện gcd (a, m) = 1 để có nghịch đảo modulo). 
+ b: hệ số cộng (một số nguyên tùy chọn). 
+ Bảng chữ cái (Alphabet): thông thường chọn bảng chữ cái tiếng Anh có 26 ký tự (A–Z) 
hoặc có thể mở rộng để bao gồm cả chữ thường, chữ số và ký tự đặc biệt.  - Đầu ra: 
+ Bản mã (Ciphertext) khi thực hiện quá trình mã hóa. 
+ Bản rõ khôi phục được (Decrypted text) khi thực hiện giải mã. 
2.3. Cơ sở lý thuyết 
2.3.1. Lý thuyết về mật mã Affine Cipher 
Mã hóa Affine Cipher là một dạng mã thay thế đơn bảng (monoalphabetic substitution 
cipher), trong đó mỗi ký tự của bản rõ được ánh xạ thành một ký tự khác dựa trên công 
thức toán học. Cơ sở toán học của hệ mã Affine nằm trong một lĩnh vực của toán học gọi 
là Số học Mô-đun (Modular Arithmetic). 
Đây là sự mở rộng của Caesar Cipher (chỉ dịch chuyển ký tự), kết hợp thêm phép nhân và 
phép cộng để tăng độ phức tạp. 
2.3.2. Số học Mô-đun và Vành số nguyên Zm 
Số học mô-đun là một hệ thống số học cho các số nguyên, nơi các số "quay vòng" sau 
khi đạt đến một giá trị nhất định gọi là mô-đun (modulus) m. Ta nói hai số nguyên x và y 
là đồng dư (congruent) theo mô-đun m, ký hiệu x ≡ y (mod m), nếu hiệu của chúng (x − y)  là một bội của m. 
Tập hợp các số dư khi chia cho m, {0,1,2,…,m − 1}, cùng với hai phép toán cộng và nhân 
mô-đun tạo thành một cấu trúc đại số gọi là vành các lớp đồng dư mô-đun m, ký hiệu là 
Zm. Mã Affine hoạt động chính trên vành Z26 (với m = 26 tương ứng 26 chữ cái). 
2.3.3. Hàm mã hóa và giải mã 
Để làm việc với các ký tự, chúng ta thiết lập một ánh xạ số: A ↔ 0, B ↔ 1, ..., Z ↔ 25.      lOMoAR cPSD| 60701415 1. 
Hàm mã hóa (Encryption Function): Với một khóa k = (a,b) ∈ K, ký tự bản rõ P có 
giá trị số là x sẽ được mã hóa thành ký tự bản mã C có giá trị số là y theo công thức: 
y = Ek(x) ≡ (ax + b) (mod 26)  Trong đó:  • 
a và b là hai số nguyên tạo thành khóa mã hóa.  • 
a phải thỏa mãn điều kiện: gcd(a, m) = 1 để đảm bảo hàm có thể đảo ngược.  • 
m là số lượng ký tự trong bảng chữ cái (ví dụ: m = 26 trong bảng chữ cái tiếng Anh). 
Đây là một phép biến đổi Affine trên vành Z26.  2. 
Hàm giải mã (Decryption Function): Để giải mã, ta cần tìm lại x từ y. Từ công thức  mãhóa, ta có:  ax ≡ (y − b) (mod 26) 
Để giải phương trình này cho x, ta cần nhân cả hai vế với nghịch đảo nhân mô-đun (modular 
multiplicative inverse) của a, ký hiệu là a ¹. Phần tử a ¹ là một số trong Z⁻ ⁻ 26 sao cho a *  a ¹ ≡ 1 (mod26).⁻ 
Nghịch đảo này chỉ tồn tại khi và chỉ khi a và m là hai số nguyên tố cùng nhau, tức là 
gcd(a,m) = 1. Đây chính là lý do cho điều kiện của khóa a. 
Khi đó, công thức giải mã là:   
x = Dk(y) ≡ a ¹ (y − b) (mod ⁻ 26) 
Nghịch đảo a ¹ thường được tìm bằng Thuật toán Euclid mở rộng.⁻ 
2.3.4. Ví dụ cụ thể  Cho bản rõ: HELLO 
Khóa: k = (a,b) = (5,8). Ta kiểm tra: gcd(5,26) = 1, vậy khóa hợp lệ.  Quá trình mã hóa: 
H (giá trị 7) → y = (5 × 7 + 8)(mod26) = 43 (mod26) = 17 → R      lOMoAR cPSD| 60701415
E (giá trị 4) → y = (5 × 4 + 8)(mod26) = 28 (mod26) = 2→ C 
L (giá trị 11) → y = (5 × 11 + 8)(mod26) = 63 (mod26) = 11 → L 
L (giá trị 11) → L 
O (giá trị 14) → y = (5 × 14 + 8)(mod26) = 78 (mod26) = 0 → A 
Kết quả bản mã: RCLLA 
Quá trình giải mã: 
Bước 1: Tìm nghịch đảo a ¹. Ta cần tìm 5⁻ -1(mod26). Bằng thuật toán Euclid mở rộng (hoặc 
thử trực tiếp), ta thấy 5 × 21 = 105 = 4 × 26 + 1, vậy 5 × 21 ≡ 1 (mod26). Do đó, a ¹⁻ = 21. 
Bước 2: Áp dụng công thức giải mã. 
R (giá trị 17) → x = 21 × (17−8)(mod26) = 21 × 9(mod26) = 189(mod26) = 7→ H 
C (giá trị 2) → x = 21 × (2−8)(mod26) = 21 × (−6)(mod26) = −126(mod26). Vì −126 = −5 
× 26 + 4, nên −126 ≡ 4(mod26)→ E. 
L (giá trị 11) → x = 21 × (11−8)(mod26) = 21 × 3(mod26) = 63(mod26) = 11→ L. 
L (giá trị 11) → L. 
A (giá trị 0) → x = 21 × (0−8)(mod26) = −168(mod26). Vì −168 = −7 × 26 + 14, nên −168  ≡ 14(mod26) → O. 
Kết quả bản rõ khôi phục: HELLO. 
2.3.4. Tính chất toán học của hàm Affine 
Hàm Affine là một dạng hàm tuyến tính có dạng:  f(x) = a * x + b 
Trong không gian số nguyên modulo, hàm này có các tính chất sau: 
Tính đơn ánh: Nếu gcd(a,m) = 1, hàm là đơn ánh, tức là mỗi đầu vào ánh xạ đến một đầu  ra duy nhất. 
Tính đảo ngược: Có thể xây dựng hàm ngược để giải mã.      lOMoAR cPSD| 60701415
Tính chu kỳ: Vì làm việc trong modulo mm, hàm có tính chu kỳ, tức là sau mm bước sẽ  lặp lại. 
2.5. Phân tích hệ mã Affine  2.5.1. Ưu điểm 
Tính đơn giản và hiệu quả tính toán: Thuật toán chỉ sử dụng các phép toán số học cơ bản, 
giúp việc cài đặt trở nên dễ dàng và tốc độ xử lý rất nhanh, không yêu cầu tài nguyên tính  toán lớn. 
Nền tảng toán học rõ ràng: Cấu trúc của mã Affine dựa trên các khái niệm cơ bản của lý 
thuyết số và đại số tuyến tính, là một ví dụ minh họa xuất sắc cho việc ứng dụng toán học  vào mật mã. 
An toàn hơn mã Caesar: Không gian khóa của mã Affine là 12 × 26 = 312 (với 12 giá trị 
hợp lệ cho a). Con số này lớn hơn đáng kể so với 25 khóa của mã Caesar, khiến việc tấn 
công bằng phương pháp thử-sai (brute-force) trở nên khó khăn hơn một chút. 
2.5.2. Hạn chế và lỗ hổng bảo mật 
Mặc dù có những ưu điểm trên, mã Affine được xem là một hệ mã rất yếu và không an toàn  trong thực tế. 
Dễ bị tấn công vét cạn (Brute-force Attack): Với năng lực của máy tính hiện đại, việc thử 
qua toàn bộ 312 khóa chỉ mất một khoảng thời gian cực ngắn (vài mili giây). 
Dễ bị tấn công phân tích tần suất (Frequency Analysis Attack): Đây là điểm yếu chí mạng 
của mọi hệ mã thay thế đơn bảng. Vì mỗi ký tự bản rõ luôn được ánh xạ đến một ký tự bản 
mã duy nhất, cấu trúc tần suất của ngôn ngữ gốc vẫn được bảo toàn trong bản mã. Ví dụ, 
trong tiếng Anh, 'E' là ký tự phổ biến nhất. Kẻ tấn công chỉ cần tìm ký tự xuất hiện nhiều 
nhất trong bản mã, giả định đó là 'E', và từ đó thiết lập một hệ phương trình để tìm ra khóa  (a,b).        lOMoAR cPSD| 60701415
CHƯƠNG 3. CÀI ĐẶT CHƯƠNG TRÌNH 
3.1. Giới thiệu về chương trình 
Tên chương trình: Mã hóa AFFINE 
Chức năng: Chương trình cho phép người dùng nhập vào một đoạn văn bản (plaintext), 
một cặp khóa (a,b) hợp lệ, sau đó thực hiện mã hóa để tạo ra bản mã (ciphertext) hoặc 
ngược lại, giải mã một bản mã để khôi phục bản rõ. Cách hoạt động: 
Người dùng khởi chạy chương trình. 
Nhập văn bản cần mã hóa vào ô 'Plain Text'. 
Nhập giá trị khóa a và b vào các ô tương ứng. Chương trình sẽ kiểm tra tính hợp lệ của a  (gcd(a,26)=1). 
Nhấn nút "Encrypt" để mã hóa 
Dán văn bản mã hóa vào ô 'Cipher Text' để giải mã. 
Nhấn 'Decrypt' để lấy lại văn bản gốc. 
3.2. Giới thiệu về ngôn ngữ chính được sử dụng trong đề tài 
Trong khuôn khổ thực hiện đề tài, việc lựa chọn nền tảng công nghệ phù hợp là một 
trong những yếu tố tiên quyết, quyết định đến sự thành công của sản phẩm. Đối với đề tài 
"Nghiên cứu về mã hóa và giải mã AFFINE trong ứng dụng truyền nhận thông tin", sự kết 
hợp giữa ngôn ngữ lập trình C# và nền tảng giao diện người dùng Windows Forms 
(WinForms) đã được lựa chọn. Lựa chọn này dựa trên những ưu điểm vượt trội về hiệu 
năng, tính cấu trúc và khả năng phát triển nhanh, đáp ứng đầy đủ các yêu cầu từ logic thuật 
toán đến giao diện tương tác người dùng. Nội dung sau đây sẽ trình bày chi tiết về hai công 
nghệ này và lý giải sự phù hợp của chúng trong bối cảnh của đề tài.      lOMoAR cPSD| 60701415  
Hình 3. Ngôn ngữ C# và nền tảng .NET Framework 
3.2.1. Ngôn ngữ lập trình C# – "Bộ não" của Ứng dụng 
C# là một ngôn ngữ lập trình hiện đại, hướng đối tượng, và an toàn về kiểu (type-safe) 
được phát triển bởi Microsoft và là một phần không thể thiếu của nền tảng .NET. Trong đề 
tài này, C# đóng vai trò là "bộ não" trung tâm, chịu trách nhiệm xử lý toàn bộ logic nghiệp 
vụ, đặc biệt là các thuật toán mã hóa và giải mã Affine. Các đặc tính nổi bật của C# phù  hợp với đề tài: 
Kiến trúc Lập trình Hướng đối tượng (OOP): Đây là ưu điểm học thuật quan trọng nhất. 
Thuật toán Affine có thể được trừu tượng hóa và đóng gói một cách hoàn hảo vào một lớp 
(class) trong C#, ví dụ như lớp AffineCipher. 
Tính đóng gói (Encapsulation): Lớp AffineCipher có thể chứa các thuộc tính (properties) 
như KeyA, KeyB, Alphabet (bảng chữ cái sử dụng) và các phương thức (methods) như 
Encrypt(string plaintext), Decrypt(string ciphertext). Điều này che giấu sự phức tạp của 
việc triển khai thuật toán bên trong, giúp mã nguồn trở nên sạch sẽ, dễ quản lý và bảo trì. 
Tính module hóa: Việc xây dựng các lớp riêng biệt cho logic mã hóa giúp dễ dàng tái sử 
dụng và tích hợp vào các phần khác của ứng dụng mà không gây ảnh hưởng. 
Hỗ trợ mạnh mẽ cho các Kiểu dữ liệu và Toán tử: Thuật toán Affine về bản chất là một tập 
hợp các phép toán số học trên các con số nguyên. 
Công thức mã hóa: C = (a * P + b) (mod m)      lOMoAR cPSD| 60701415
Công thức giải mã: P = a-1 * (C − b) (mod m) C# cung cấp các kiểu dữ liệu số nguyên mạnh 
mẽ (int, long) và các toán tử số học (+, -, *) cần thiết. Đặc biệt, toán tử modulo (%) là công 
cụ cốt lõi để thực hiện phép toán đồng dư, vốn là trái tim của thuật toán Affine. Việc tìm 
nghịch đảo modular (a−1) cũng có thể được triển khai dễ dàng thông qua các hàm toán học. 
Khả năng xử lý Chuỗi và Ký tự ưu việt: Ứng dụng cần xử lý thông điệp đầu vào (plaintext) 
và đầu ra (ciphertext) dưới dạng chuỗi văn bản. C# cung cấp lớp string và kiểu char với 
một hệ thống phương thức phong phú để lặp qua từng ký tự, chuyển đổi chữ hoa/chữ 
thường (ToUpper(), ToLower()), và xây dựng chuỗi kết quả một cách hiệu quả, giúp cho 
việc ánh xạ ký tự sang số và ngược lại trở nên đơn giản. 
An toàn kiểu: C# là ngôn ngữ an toàn kiểu, giúp giảm thiểu các lỗi tiềm ẩn liên quan đến 
việc chuyển đổi sai kiểu dữ liệu (ví dụ: nhầm lẫn giữa số và ký tự). Điều này đảm bảo tính 
toàn vẹn và chính xác của thuật toán, một yếu tố cực kỳ quan trọng trong lĩnh vực mật mã. 
3.2.2. Windows Forms – "Bộ mặt" của Ứng dụng 
Windows Forms là một framework giao diện người dùng đồ họa (GUI) nằm trong .NET 
Framework, cho phép các nhà phát triển tạo ra các ứng dụng máy tính để bàn (desktop 
application) cho hệ điều hành Windows. Trong đề tài này, WinForms đóng vai trò là "bộ 
mặt", là cầu nối trực quan cho phép người dùng cuối tương tác với logic mã hóa do C# xử 
lý. Vậy tại sao WinForms là lựa chọn tối ưu cho giao diện của đề tài: 
Xây dựng Giao diện người dùng trực quan (GUI): Mục tiêu của đề tài là tạo ra một "ứng 
dụng truyền nhận thông tin". Điều này đòi hỏi phải có một giao diện rõ ràng để người dùng  có thể: 
Nhập văn bản cần mã hóa (plaintext). 
Nhập các khóa (khóa a, khóa b). 
Thực hiện hành động mã hóa hoặc giải mã. 
Xem kết quả (ciphertext) và sao chép nó. WinForms cung cấp một bộ công cụ (toolbox) 
đầy đủ các điều khiển (controls) như TextBox (để nhập liệu), Button (để kích hoạt sự kiện),      lOMoAR cPSD| 60701415
Label (để hiển thị nhãn và kết quả), giúp việc thiết kế giao diện này trở nên nhanh chóng 
và dễ dàng thông qua trình thiết kế kéo - thả (drag - and - drop) của Visual Studio. 
Mô hình Lập trình Hướng sự kiện (Event - Driven Programming): Đây là mô hình hoạt 
động cốt lõi của WinForms. Giao diện người dùng sẽ "chờ" các hành động từ người dùng 
(sự kiện). Ví dụ, khi người dùng nhấn vào nút "Mã hóa", sự kiện Button_Click sẽ được 
kích hoạt. Lập trình viên sẽ viết mã C# trong trình xử lý sự kiện này để lấy dữ liệu từ các 
TextBox, gọi phương thức Encrypt() từ lớp AffineCipher, và cuối cùng hiển thị kết quả ra 
một TextBox hoặc Label khác. Mô hình này giúp tách biệt rõ ràng giữa phần giao diện (UI) 
và phần xử lý logic (business logic), tuân thủ các nguyên tắc thiết kế phần mềm tốt. 
Phát triển Ứng dụng Nhanh (Rapid Application Development - RAD): Đối với một đề tài 
nghiên cứu có quy mô vừa phải, việc tập trung vào thuật toán cốt lõi là quan trọng hơn việc 
xây dựng một giao diện phức tạp. WinForms cho phép phát triển giao diện một cách cực 
kỳ nhanh chóng, giúp người thực hiện đề tài tiết kiệm thời gian và công sức để tập trung 
vào phần nghiên cứu và triển khai thuật toán mã hóa Affine. 
3.2.3. Sự cộng hưởng giữa C# và WinForms 
Sự kết hợp giữa C# và WinForms không chỉ đơn thuần là ghép nối hai công nghệ, mà là 
một sự cộng hưởng hoàn hảo trong cùng một hệ sinh thái .NET được hỗ trợ bởi môi trường 
phát triển tích hợp (IDE) Visual Studio. 
C# cung cấp sức mạnh tính toán, cấu trúc logic chặt chẽ để triển khai chính xác các yêu 
cầu toán học phức tạp của thuật toán Affine. 
WinForms cung cấp một phương tiện trực quan, thân thiện để người dùng có thể khai thác 
và kiểm chứng sức mạnh của thuật toán đó mà không cần phải tương tác với các dòng lệnh  phức tạp. 
Nói một cách hình ảnh, C# là cỗ máy mạnh mẽ bên trong, thực hiện mọi phép tính mã hóa 
và giải mã. Trong khi đó, WinForms là bảng điều khiển với các nút bấm và màn hình hiển 
thị, cho phép người dùng dễ dàng điều khiển cỗ máy đó.      lOMoAR cPSD| 60701415
3.3 Giao diện phần mềm 
3.3.1. Giao diện trang Đăng nhập 
Người dùng sẽ đăng nhập tài khoản, mật khẩu để vào được chương trình.   
Hình 3.3.1. Giao diện Đăng nhập vào chương trình 
3.3.2. Giao diện chính của chương trình 
Ở đây người dùng nhập văn bản, nhập khóa a,b. 
Chương trình kiểm tra tính hợp lệ của a. 
Thực hiện mã hóa/giải mã và in kết quả ra màn hình.