lOMoARcPSD| 60701415
BỘ GIÁO DỤC VÀ ĐÀO TẠO
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
Đề tài số 19: ỨNG DỤNG MÃ HÓA VÀ GIẢI MÃ DES VÀO
BẢO MẬT TIN NHẮN GIỬA HAI THIẾT BỊ
Sinh viên thực hiện
Lớp
Khóa
Hoàng Tiến Phương
DCCNTT12.10.3
K12
Phạm Trung Anh
DCCNTT12.10.3
K12
Vũ Hoàng Công Anh
DCCNTT12.10.3
K12
Nguyễn Thanh
DCCNTT12.10.3
K12
Phạm Công An
DCCNTT12.10.3
K12
Bắc Ninh, năm 2024
lOMoARcPSD| 60701415
BỘ GIÁO DỤC VÀ ĐÀO TẠO 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
Đề tài số 19: ỨNG DỤNG MÃ HÓA VÀ GIẢI MÃ DES VÀO
BẢO MẬT TIN NHẮN GIỬA HAI THIẾT BỊ
STT
Sinh viên thực hiện
Điểm bằng số
Điểm bằng
chữ
1
Hoàng Tiến Phương
2
Phạm Trung Anh
3
Vũ Hoàng Công Anh
4
Nguyễn Thanh
5
Phạm Công An
CÁN BỘ CHẤM 1 CÁN BỘ CHẤM 2
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
lOMoARcPSD| 60701415
Mục Lục
Lời Nói Đầu ........................................................................................................... 3
CHƯƠNG I. Tnh bày thuật toán DES ................................................................. 4
1.1: lý do chọn đề tài .............................................................................................. 4
1.2: Mục tiêu nghiên cứu ....................................................................................... 5
1.3. Phương pháp nghiên cứu của đề tài ................................................................ 5
1.5 .Giới thiệu thuật toán DES ............................................................................... 7
1.6 Hoán vị khởi tạo ............................................................................................... 9
1.7 Tính khóa vòng - KS ...................................................................................... 13
1.8 Hoán vị khởi tạo đảo IP-1 .............................................................................. 16
Chương II. Giới thiệu ứng dụng mô phỏng quá trình mã hóa ............................. 17
1. Lớp xử lý chuỗi ................................................................................................ 17
2. Lớp sinh khóa ................................................................................................... 18
3. Lớp mã hóa dữ liệu .......................................................................................... 19
4. Giao diện chương trình .................................................................................... 20
Lời Nói Đầu
Ngày nay, mạng máy tính ngày càng trở nên phổ biến [1]. Mỗi quốc gia đều
mạng riêng với rất nhiều mạng mang tính bộ phận, trên phạm vi toàn cầu, người
ta đã dùng mạng Internet một cách thông dụng. Nhiều dịch vụ điện tử như: thư
điện tử, chuyển tiền, thương mại điện tử, chính phủ điện tử...đã được áp dụng rộng
rãi.
Các ứng dụng trên mạng máy ngày càng trở nên phổ biến thuận lợi và quan
trọng thì yêu cầu về an toàn mạng, về an ninh dliệu càng trở nên cấp bách cần
thiết.
Trên thế giới rất nhiều quốc gia, nhiều nhà khao học nghiên cứu về vấn
đề bảo mật, đưa ra nhiều thuật toán với mục đích thông tin truyền đi không bị lấy
cắp hoặc nếu bị lấy cắp thì cũng không sử dụng được.Và trong thời đại công nghệ
lOMoARcPSD| 60701415
thông tin hiện đại, việc bảo mật thông tin trở nên cực kỳ quan trọng. hóa
một phương pháp chính để đảm bảo tính bảo mật của dliệu trong quá trình truyền
tải. Trong báooy, chúng tôi sẽ giới thiệu ứng dụng của thuật toán DES (Data
Encryption Standard) trong việc mã hóa và giải mã tin nhắn giữa hai thiết bị.
CHƯƠNG 1. Trình bày thuật toán DES
1.1. Lý do chọn đề tài
Chọn đề tài "Ứng dụng mã hóa và giải mã DES và bảo mật tin nhắn giữa hai
thiết bị" có một số lý do hợp lý sau:
Tính hiện đại và thiết thực: Bảo mật thông tin ngày càng trở thành một vấn đ
quan trọng trong thế giới kỹ thuật số ngày nay. Việc nghiên cứu và áp dụng các
thuật toán mã hóa như DES để bảo vệ thông tin trở nên cần thiết hơn bao giờ hết.
Độ phức tạp vừa phải: DES là một trong những thuật toán mã hóa cổ điển nhưng
vẫn được sử dng rộng rãi trong nhiều ứng dụng hiện đại. Việc nghiên cứu và áp
dụng DES trong việc bảo vệ thông tin giữa hai thiết bị là một dự án có độ phức
tạp vừa phải để bắt đầu.
Ứng dụng thực tiễn: Việc áp dụng DES để bảo vệ thông tin giữa hai thiết bị có
thể có ứng dụng rộng rãi trong nhiều lĩnh vực, từ trao đổi tin nhắn cá nhân đến
giao tiếp trong các hệ thống công nghiệp hoặc chính phủ.
Khả năng nghiên cứu sâu: Việc nghiên cứu về DES không chỉ giúp bạn hiểu rõ
về cơ chế hoạt động của thuật toán mà còn giúp bạn khám phá các khía cạnh liên
quan như vấn đề an toàn thông tin, thuyết mã hóa, và kỹ thuật triển khai. Tiềm
năng phát triển: Dự án này cũng có thể dễ dàng mở rộng để nghiên cứu và thử
nghiệm các thuật toán mã hóa và giải mã khác như AES, RSA, và cả các phương
pháp mã hóa đối xứng và không đối xứng khác.
lOMoARcPSD| 60701415
1.2: Mục tiêu nghiên cứu
Mục tiêu nghiên cứu của đề tài "Ứng dụng mã hóa và giải mã DES và bảo mật
tin nhắn giữa hai thiết bị" có thể bao gồm các điểm sau:
Hiểu rõ về DES: Nắm vững cơ chế hoạt động của thuật toán mã hóa DES, bao
gồm các bước chính như hoán vị, thay thế, và pha mở rộng, cũng như quá trình
giải mã.
Triển khai mã hóa và giải mã DES: Phát triển một ứng dụng thực tế để thực hiện
mã hóa và giải mã DES trên hai thiết bị, ví dụ như điện thoại di động và máy
tính cá nhân.
Xác định các vấn đề bảo mật: Phân tích các lỗ hổng bảo mật có thể xảy ra trong
quá trình truyền tin nhắn giữa hai thiết bị và đề xuất các biện pháp để bảo v
thông tin khỏi các cuộc tấn công như tin trộm hoặc phá hoại.
Thử nghiệm và đánh giá hiệu suất: Thực hiện các thử nghiệm để đánh giá hiệu
suất của hệ thống mã hóa và giải mã DES, bao gồm cả tốc độ và độ bảo mật. Mở
rộng và cải tiến: Nghiên cứu cách mở rộng dự án để bao gồm các thuật toán mã
hóa và giải mã khác như AES hoặc RSA, cũng như các phương pháp bảo mật
thông tin mới nhất.
Tạo ra một sản phẩm hoặc dịch vụ: Cui cùng, mục tiêu có thể là phát triển một
sản phẩm hoặc dịch vụ thương mại dựa trên nghiên cứu của bạn, cung cấp giải
pháp bảo mật tin nhắn cho các tổ chức hoặc cá nhân.
1.3 Phương pháp nghiên cứu của đề tài
Nghiên cứu lý thuyết: Bắt đầu bằng việc tìm hiểu về lý thuyết mã hóa và giải mã,
đặc biệt là về thuật toán DES. Nắm vững các nguyên lý cơ bản của DES và các
phương pháp bảo mật thông tin.
Phân tích yêu cầu: Xác định các yêu cầu cụ thể cho hệ thống bảo mật tin nhắn
giữa hai thiết bị, bao gồm cả tính bảo mật, tính linh hoạt và hiệu suất.
Thiết kế hệ thống: Phát triển một hệ thng mã hóa và giải mã dựa trên thuật toán
DES, cũng như các giao thức và phương tiện truyền tin nhắn thích hợp để bảo vệ
thông tin.
lOMoARcPSD| 60701415
Thử nghiệm và đánh giá: Tiến hành các thử nghiệm để đánh giá hiệu suất và độ
bảo mật của hệ thống trong các tình huống khác nhau, bao gồm cả truyền tin qua
mạng không an toàn.
Đánh giá rủi ro và phản ứng: Xác định các rủi ro bảo mật tiềm ẩn và phản ứng
thích hợp, bao gồm cả cách xử lý cuộc tấn công và cách cải thiện hệ thống để
ngăn chặn chúng.
So sánh và phân tích: So sánh hiệu suất và tính bảo mật của hệ thống với các
phương pháp mã hóa và bảo mật khác để đánh giá tính cạnh tranh và sự ưu việt
của nghiên cứu của bạn.
Viết báo cáo và công bố: Tổng hợp kết quả nghiên cứu và viết báo cáo hoặc bài
báo khoa học để chia sẻ kiến thức và kết quả của bạn với cộng đng nghiên cứu.
1.4 Bố cục của đề tài
Giới thiệu:
Trình bày vấn đề nghiên cứu và lý do quan trọng của đề tài.
Đưa ra mục tiêu và phạm vi của nghiên cứu.
Tóm tắt cấu trúc của báo cáo.
Nền tảng lý thuyết:
Mô tả về thuật toán DES và cơ chế hoạt động của nó.
Giới thiệu về các khái niệm cơ bản trong bảo mật thông tin.
Công nghệ và công cụ:
Giới thiệu các công nghệ và công cụ được sử dụng trong quá trình nghiên cứu,
bao gồm ngôn ngữ lập trình, framework, và các thư viện mã nguồn mở.
Thiết kế hệ thống:
Trình bày kiến trúc của hệ thống mã hóa và giải mã tin nhắn giữa hai thiết bị. Mô
tả cụ thể về cách thức triển khai thuật toán DES trong hệ thống.
Thực hiện và thử nghiệm:
Mô tả về quá trình triển khai hệ thống và các thử nghiệm được thực hiện để đánh
giá hiệu suất và độ bảo mật.
Trình bày kết quả thu được và phân tích.
Đánh giá và thảo luận:
lOMoARcPSD| 60701415
Phân tích kết quả thử nghiệm và đánh giá tính khả thi của hệ thống.
Thảo luận về ưu điểm, hạn chế và hướng phát triển tiếp theo của đề tài.
Kết luận:
Tóm tắt lại những điểm chính của nghiên cứu và đưa ra những kết luận chính. Đề
xuất hướng phát triển tiếp theo và công cụ thực hiện.
Tài liệu tham khảo:
Liệt kê các tài liệu và nguồn thông tin được tham khảo trong quá trình nghiên
cứu.
Phụ lục (nếu cần):
Bao gồm các thông tin bổ sung như mã nguồn, bảng dữ liệu, hoặc các chi tiết kỹ
thuật khác.
1.5 .Giới thiệu thuật toán DES
Thuật toán DES được sử dụng để mã hóa và giải mã các block (khối) dữ
liệu 64 bit dựa trên một key (khóa mã) 64 bit. Chú ý, các block được đánh số thứ
tự bit từ trái sang phải và bắt đầu từ 1, bit đầu tiên bên trái là bit số 1 và bit cuối
cùng bên phải là bit số 64. Quá trình giải mã và mã hóa sử dụng cùng một key
nhưng thứ tự phân phối các giá trị các bit key của quá trình giải mã ngược với
quá trình mã hóa.
Một block dữ liệu sẽ được hoán vị khởi tạo (Initial Permutation) IP trước khi
thực hiện tính toán mã hóa với key. Cuối cùng, kết quả tính toán với key sẽ được
hoán vị lần nữa để tạo ra , đây là hoán vị đảo của hoán vị khởi tạo gọi là (Inverse
Initial Permutation) IP-1. Việc tính toán dựa trên key được định nghĩa đơn giản
trong một hàm f, gọi là hàm mã a, và mt hàm KS, gi là hàm phân phối key
(key schedule). Hàm KS là hàm tạo ra các khóa vòng (round key) cho các lần lặp
mã hóa. Có tất cả 16 khóa vòng từ 1 đến K16.
lOMoARcPSD| 60701415
Ở hình 1.1. nói rằng ……
Hình 1. Giải thuật mã hóa DES
lOMoARcPSD| 60701415
1.6 Hoán vị khởi tạo
IP Hoán vị là thay đổi ví trí các bit trong mt chuỗi giá trị nhưng không làm
thay đổi giá trị của các bit này. Đây bước đầu tiên trong quy trình hóa dữ
liệu. 64 bit dữ liệu đầu vào, gọi là plaintext, sẽ được hoán vị theo bảng mô tả sau
đây.
Hình 2. Sơ đồ hoán vị khởi tạo, kí hiệu IP
- Chuỗi bit đầu vào được đánh số từ 1 đến 64 (tính từ trái qua phải). Sau đó,
cácbit này được thay đổi vị trí như sơ đồ IP, bit số 58 được đặt vào vị trí đầu tiên,
bit số 50 được đặt vào vtrí thứ 2. Cứ như vậy, bit th7 được đặt vào vị trí cuối
cùng.
- Sau hoán vị, chuỗi bit mới được phân ra làm hai đoạn, mỗi đoạn 32 bit để
bắtđầu vào quy trình tính toán hóa với key. Đoạn bên trái hiệu L, đoạn
bên phải hiệu R. Đoạn L gồm các bit từ bit số 1 đến bit số 32, đoạn R gồm
các bit từ bit số 33 đến bit số 64. Đoạn L của lần tính toán sau sẽ chính là đoạn R
của lần tính toán trước. Đoạn R của lần tính toán sau sẽ được tính từ đoạn R trước
đó qua hàm mã hóa f(R, K) rồi XOR với đoạn L của lần tính trước đó.
lOMoARcPSD| 60701415
Hình 3. Tính toán hàm mã hóa f(R,K)
Đầu tiên, 32 bit của đoạn R được đánh số từ 1 đến 32 theo thứ tự từ trái qua phải.
Giá trị này sẽ được chuyển đổi thông qua bảng tra E để tạo thành một giá trị 48
bit. Bit đầu tiên trong chuỗi giá trị 48 bit là bit số 32 của R, bit thứ 2 là bit số 1
của R, bit thứ 3 là bit số 2 của R và bit cuối cùng là bit số 1 ca R.
lOMoARcPSD| 60701415
Hình 4. Bảng tra E
Sau khi tra bảng E, giá trị 48 bit được XOR với 48 bit ca khóa vòng (cách tạo ra
khóa vòng 48 bit sẽ được trình bày sau). Kết quả phép XOR được chia làm 8
block được đánh số từ 1 đến 8 theo thứ tự từ trái qua phải, mỗi block 6 bit. Mỗi
block sẽ được biến đổi thông qua các hàm lựa chọn riêng biệt. Tương ứng với 8
block sẽ có 8 hàm chuyển đổi (selection function) riêng biệt là S1, S2, S3, S4,
S5, S6, S7 và S8.
Hình 5. Các hàm S (selection fuction)
lOMoARcPSD| 60701415
Việc chuyển đổi giá trị của các hàm S1, S2, ..., S8 được thực hiện bằng cách tách
block 6 bit thành hai phần. Phần thứ nhất là tổ hợp của bit đầu tiên và bit cui
cùng của block để tạo thành 2 bit chọn hàng của bảng S, bảng S có 4 hàng được
đánh số từ 0 đến 3 theo thứ tự từ trên xuống. Phần thứ 2 là 4 bit còn lại dùng để
chọn cột của bảng S, bảng S có 16 cột được đánh số từ 0 đến 15 theo thứ tự từ
trái qua phải. Như vậy, với mỗi block 8 bit ta chọn được 1 giá trị trong bảng S.
Giá trị này nằm trong khoảng từ 0 đến 15 sẽ được quy đổi thành chuỗi nhị phân
4 bit tương ứng. Các chuỗi nhị phân có được sau khi chuyển đổi từ S1 đến S8 sẽ
được ghép lại theo thứ tự từ trái qua phải để tạo thành một giá trị 32 bit.
Ví dụ về việc thực hiện chuyển đổi hàm S, giả sử, giá trị block 6 bit đầu tiên là
011011. Ta tách chuỗi này ra làm hai tổ hợp giá trị là 01 (bit đầu tiên và bit cuối
cùng) và 1101 (4 bit ở giữa). Hai tổ hợp này được dùng để chọn hàng và cột
tương ứng như hình minh họa sau:
Hình 7. Minh họa việc sử dụng hàm S1
Tổ hợp 01 sẽ chọn hàng 1, tổ hợp 1101 sẽ chọn cột 13 và kết quả trả về là 5 có
giá trị nhị phân 4 bit là 0101. Qua bước chuyển đổi với các hàm lựa chọn S, kết
quả thu được là một giá trị 32 bit. Giá trị này được đưa qua một hàm hoán vị P
để tạo ra giá trị hàm f.
Hình 7. Hoán vị P trong thuật toán tính hàm mã hóa f(R,K)
lOMoARcPSD| 60701415
Giá trị 32 bit thu được từ các chuyển đổi với hàm lựa chọn S sẽ được đánh s từ
1 đến 32 theo thứ tự từ trái qua phải. Theo bảng hoán vị P, bit đầu tiên sau hoán
vị sẽ là bit số 16, bit thứ 2 sẽ là bit s 7 và bit cuối cùng sẽ là bit số 25. Hàm tính
toán mã hóa f(R, K) được định nghĩa như sau:
Trong đó:
- P(): là phép hoán v P
- Sn: là phép chuyển đổi block n (n chạy từ 1 đến 8) với hàm lựa chọn S
- Bn: là block 6 bit thứ n (n chạy từ 1 đến 8). Block này lấy từ phép toán
XOR -giữa khóa vòng K và giá trị hàm E(R)
- E(R): là hàm chuyển đổi giá trị R 32 bit thành giá trị 48 bit
1.7 Tính khóa vòng - KS
Một key có 64 bit nhưng chỉ có 56 bit được sử dng để thực hiện tính toán giá trị
khóa vòng. Key được chia làm 8 byte. Các bit ở vị trí 8, 16, 32, 40, 48, 56 và 64
là các bit parity được sử dụng để kiểm tra đ chính xác ca key theo từng byte vì
khi key được phân phối trên đường truyền đến bộ mã hóa giải mã thì có thể xảy
ra lỗi. Parity được sử dụng là parity lẻ (odd parity).
lOMoARcPSD| 60701415
Hình 8. Thuật toán tính khóa vòng
Key gốc sẽ được thực hiện hoán vị lựa chọn PC-1. Key được đánh số từ 1 đến 64
theo thứ tự từ trái qua phải.
lOMoARcPSD| 60701415
Hình 9. Bảng hoán vị lựa chọn PC-1
Bảng hoán vị lựa chọn PC-1 có hai phần. Phần đầu dùng để xác định giá tr C0 và
phần sau dùng để xác định giá trị D0. Theo bảng trên thì C0 là chuỗi bit có thứ tự
là 57, 49, 41, ..., 36 lấy tkey gốc, D0 là chuỗi bit thứ tự là 63, 55, 47, ..., 4 lấy
từ key gốc. Sau khi xác định được giá trị ban đầu để tính key là C0 và D0 thì các
khóa vòng Kn (với n t1 đến 16) sẽ được tính theo nguyên tắc gtrị của khóa
vòng thứ n sẽ được tính từ giá trị khóa vòng thứ n-1.
Trong đó Cn và Dn được tạo từ Cn-1 và Dn-1 bằng cách dịch trái các giá tr này
với số bit được quy định trong bảng sau đây:
Hình 10. Bảng quy định số bit dịch trái khi tính khóa vòng
Ví dụ, theo bảng trên, C3 và D3 có được từ C2 và D2 bằng cách dịch trái 2 bit.
Hay C16 và D16 có được từ C15 và D15 bằng cách dch trái 1 bit. Dịch trái
đây được hiểu là quay trái như minh ha sau đây:
lOMoARcPSD| 60701415
Hình 11. Minh họa phép dịch trái khi tính khóa vòng
Sau khi tính được Cn và Dn thì chuỗi CnDn sẽ được đánh số từ 1 đến 56 theo thứ
tự từ trái sang phải và được hoán vị lựa chọn lần 2 theo bảng hoán vị PC-2.
Hình 12. Bảng hoán vị lựa chọn PC-2
Như vậy bit đầu tiên của khóa vòng Kn là bit số 14 của chuỗi CnDn, bit thứ 2 là
bit số 17 của chuỗi CnDn và bit cui cùng là bit số 32 của chuỗi CnDn.
1.8 Hoán vị khởi tạo đảo IP-1
Đây là bước cuối cùng để tạo ra giá trị mã hóa. Giá trị ca lần lặp mã hóa cuối
cùng sẽ được hoán vị khởi tạo đảo IP-1 và tạo ra giá tr mã hóa plaintext.
lOMoARcPSD| 60701415
Hình 13. Bảng hoán vị khởi tạo đảo IP-1
Chương II. Giới thiệu ứng dụng mô phỏng quá trình mã hóa
Giới thiệu chương trình:
Chương trình được viết bằng ngôn ngữ Java, lập trình hướng đối tượng, có giao
diện mô phng .
Chức năng:
- Hiển thị các ma trận PC1, PC2 và 16 vòng trong quá trình tạo khóa -
Hiển thị quá trình mã hóa khóa, tạo ra 16 khóa phục vụ quá trình
mã.
- Hiển thị ma trận IP, IP_1, E, P, S1 đến S8
- Chỉ hỗ trợ mã hóa chuỗi 8 ký tự
- Hiển thị quá trình xử lý chuỗi nhập vào và biến đổi, mã hóa
1. Lớp xử lý chuỗi
Class: StringAndChar
StringAndChar
+
stringToHexa
()
+
hexaToBinary
()
+
hexaToString
()
lOMoARcPSD| 60701415
+ stringToHexa: Chuyển chuỗi nhập vào thành chuỗi hexa (Mỗi ký tự chuyển
thành nhóm số hexa có 2 chữ số).
+ hexaToBinary: Chuyển chuỗi hexa thành chuỗi nhị phân, mỗi ký tự hexa
chuyển thành 1 nhóm số nhị phân có 4 chữ số .
+ hexaToString: Chuyển chuỗi hexa thành chuỗi ký tự thông thường, 2 chữ số
hexa nhóm lại 1 nhóm và chuyển thành ký tự.
2. Lớp sinh khóa
Thuộc tính:
+ stringKey: Chuỗi có 8 ký tự nhập vào để tạo khóa
+ hexaStringKey: Khóa stringKey sau khi đã chuyển thành mã hexa.
+ binaryStringKey: Chuỗi nhị phân tạo từ chuỗi hexa trên.
+ list16Key: Danh sách 16 khóa được tạo thành.
+ k16Round: Danh sách 16 vòng phục vụ quá trình tạo 16 khóa.
+ PC1, PC2: Ma trận phục vụ quá trình hoán v, tạo khóa.
Phương thức:
+ createKey(): Tạo ra 16 khóa
+ createk16Round(): Tạo 16 vòng cho quá trình tạo khóa.
+ permutations(): phương thức hoán v.
MyKey
+
stringKey
+
hexStringKey
+
binaryStringKey
+
binaryArrayKey
+
list16Key
+
k16Round
+
PC
1
+
PC
2
+
createKey
()
+
createk16Round
()
+
permutations
()
lOMoARcPSD| 60701415
3. Lớp mã hóa dữ liệu
MyEncrypt
+ stringKey
+ stringInput
+ hexStringInput
+ binaryStringInput
+ stringOutDecimal
+ stringOutHexa
+ stringOut
+ binaryArrayStringInput
+ binaryArrayIP
+ L0, R0
+ L16 , R16
+ RL16
+ RL16_IP_1
+ IP, IP_1, E, P, S1 ... S8
+ createEncrypt()
+ functionF()
+ Sto4bit()
+ myXor()
- Thuộc tính:
+ stringKey: Key để mã hóa
+ stringInput: Bản rõ là chui có 8 ký tự nhập vào để mã hóa.
+ hexStringInput: Bản rõ sau khi chuyển thành mã hexa.
+ binaryStringInput: Bản rõ sau khi đã chuyển thành mã nhị
phân. + stringOutDecimal: Bản mã ở dạng dãy thập phân
(ASCII) + stringOutHexa: Bản mã ở dạng chuỗi hexa.
+ stringOut: Bản mã ở dạng chuỗi thông thường.
+ binaryArrayStringInput: Mảng chứa các chữ số nhị phân tách từ
binaryStringInput.
+ binaryArrayIP: Chứa kết quả sau khi binarryArrayStringInput hoán vị qua
IP .
+ L0, R0: Tách đôi ra từ binaryArrayIP
+ L16 , R16: Kết quả sau 16 vòng lặp cùng 1 hàm xác định (F)
+ RL16: Gộp lại 2 mảng từ L16 và R16
lOMoARcPSD| 60701415
+ RL16_IP_1: Hoán vị RL16 qua IP_1, cũng chính là bản mã
dạng mã nhị phân.
+ IP, IP_1, E, P, S1 ... S8: Các mảng 1 chiều và 2 chiều cần cho quá
Trình mã hóa (các mảng này là hằng số).
- Phương thức:
+ createEncrypt(): Phương thức chính thực hiện quá trình.Mã hóa, hoạt động
bằng cách thực hiện xử lý các chuỗi vào ra, xử lý các bit nhị phân , có sử dụng
các phương thức phía dưới, trả về 1 mảng 32 bit nhị phân.
+ functionF(): Hàm F, xử lý đầu vào là Ri và khóa Ki .
+ Sto4bit(): phương thức được sử dụng để phục vụ quá trình làm việc của
functionF(). Nó xử lý đầu vào là 6 bit nhị phân,các ma trận 2 chiều (chính
8 hộp Sbox), trả về 4 bit nhị phân.
+ myXor(): Xor lần lượt thứ tự các phần tử của 2 mảng chứa các chữ số nhị
phân. Trả về là 1 mảng các chữ số nhị phân!
4. Giao diện chương trình

Preview text:

lOMoAR cPSD| 60701415
BỘ GIÁO DỤC VÀ ĐÀO TẠO
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
Đề tài số 19: ỨNG DỤNG MÃ HÓA VÀ GIẢI MÃ DES VÀO
BẢO MẬT TIN NHẮN GIỬA HAI THIẾT BỊ
Sinh viên thực hiện Lớp Khóa Hoàng Tiến Phương DCCNTT12.10.3 K12 Phạm Trung Anh DCCNTT12.10.3 K12 Vũ Hoàng Công Anh DCCNTT12.10.3 K12 Nguyễn Thanh Tú DCCNTT12.10.3 K12 Phạm Công An DCCNTT12.10.3 K12 Bắc Ninh, năm 2024 lOMoAR cPSD| 60701415
BỘ GIÁO DỤC VÀ ĐÀO TẠO 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
Đề tài số 19: ỨNG DỤNG MÃ HÓA VÀ GIẢI MÃ DES VÀO
BẢO MẬT TIN NHẮN GIỬA HAI THIẾT BỊ STT
Sinh viên thực hiện Mã sinh viên
Điểm bằng số Điểm bằng chữ
1 Hoàng Tiến Phương 20210857
2 Phạm Trung Anh 20210705
3 Vũ Hoàng Công Anh 20210856
4 Nguyễn Thanh Tú
5 Phạm Công An CÁN BỘ CHẤM 1 CÁN BỘ CHẤM 2
(Ký và ghi rõ họ tên)
(Ký và ghi rõ họ tên) lOMoAR cPSD| 60701415 Mục Lục
Lời Nói Đầu ........................................................................................................... 3
CHƯƠNG I. Trình bày thuật toán DES ................................................................. 4
1.1: lý do chọn đề tài .............................................................................................. 4
1.2: Mục tiêu nghiên cứu ....................................................................................... 5
1.3. Phương pháp nghiên cứu của đề tài ................................................................ 5
1.5 .Giới thiệu thuật toán DES ............................................................................... 7
1.6 Hoán vị khởi tạo ............................................................................................... 9
1.7 Tính khóa vòng - KS ...................................................................................... 13
1.8 Hoán vị khởi tạo đảo IP-1 .............................................................................. 16
Chương II. Giới thiệu ứng dụng mô phỏng quá trình mã hóa ............................. 17
1. Lớp xử lý chuỗi ................................................................................................ 17
2. Lớp sinh khóa ................................................................................................... 18
3. Lớp mã hóa dữ liệu .......................................................................................... 19
4. Giao diện chương trình .................................................................................... 20 Lời Nói Đầu
Ngày nay, mạng máy tính ngày càng trở nên phổ biến [1]. Mỗi quốc gia đều
có mạng riêng với rất nhiều mạng mang tính bộ phận, trên phạm vi toàn cầu, người
ta đã dùng mạng Internet một cách thông dụng. Nhiều dịch vụ điện tử như: thư
điện tử, chuyển tiền, thương mại điện tử, chính phủ điện tử...đã được áp dụng rộng rãi.
Các ứng dụng trên mạng máy ngày càng trở nên phổ biến thuận lợi và quan
trọng thì yêu cầu về an toàn mạng, về an ninh dữ liệu càng trở nên cấp bách và cần thiết.
Trên thế giới có rất nhiều quốc gia, nhiều nhà khao học nghiên cứu về vấn
đề bảo mật, đưa ra nhiều thuật toán với mục đích thông tin truyền đi không bị lấy
cắp hoặc nếu bị lấy cắp thì cũng không sử dụng được.Và trong thời đại công nghệ lOMoAR cPSD| 60701415
thông tin hiện đại, việc bảo mật thông tin trở nên cực kỳ quan trọng. Mã hóa là
một phương pháp chính để đảm bảo tính bảo mật của dữ liệu trong quá trình truyền
tải. Trong báo cáo này, chúng tôi sẽ giới thiệu ứng dụng của thuật toán DES (Data
Encryption Standard) trong việc mã hóa và giải mã tin nhắn giữa hai thiết bị.
CHƯƠNG 1. Trình bày thuật toán DES
1.1. Lý do chọn đề tài
Chọn đề tài "Ứng dụng mã hóa và giải mã DES và bảo mật tin nhắn giữa hai
thiết bị" có một số lý do hợp lý sau:
Tính hiện đại và thiết thực: Bảo mật thông tin ngày càng trở thành một vấn đề
quan trọng trong thế giới kỹ thuật số ngày nay. Việc nghiên cứu và áp dụng các
thuật toán mã hóa như DES để bảo vệ thông tin trở nên cần thiết hơn bao giờ hết.
Độ phức tạp vừa phải: DES là một trong những thuật toán mã hóa cổ điển nhưng
vẫn được sử dụng rộng rãi trong nhiều ứng dụng hiện đại. Việc nghiên cứu và áp
dụng DES trong việc bảo vệ thông tin giữa hai thiết bị là một dự án có độ phức
tạp vừa phải để bắt đầu.
Ứng dụng thực tiễn: Việc áp dụng DES để bảo vệ thông tin giữa hai thiết bị có
thể có ứng dụng rộng rãi trong nhiều lĩnh vực, từ trao đổi tin nhắn cá nhân đến
giao tiếp trong các hệ thống công nghiệp hoặc chính phủ.
Khả năng nghiên cứu sâu: Việc nghiên cứu về DES không chỉ giúp bạn hiểu rõ
về cơ chế hoạt động của thuật toán mà còn giúp bạn khám phá các khía cạnh liên
quan như vấn đề an toàn thông tin, lý thuyết mã hóa, và kỹ thuật triển khai. Tiềm
năng phát triển: Dự án này cũng có thể dễ dàng mở rộng để nghiên cứu và thử
nghiệm các thuật toán mã hóa và giải mã khác như AES, RSA, và cả các phương
pháp mã hóa đối xứng và không đối xứng khác. lOMoAR cPSD| 60701415
1.2: Mục tiêu nghiên cứu
Mục tiêu nghiên cứu của đề tài "Ứng dụng mã hóa và giải mã DES và bảo mật
tin nhắn giữa hai thiết bị" có thể bao gồm các điểm sau:
Hiểu rõ về DES: Nắm vững cơ chế hoạt động của thuật toán mã hóa DES, bao
gồm các bước chính như hoán vị, thay thế, và pha mở rộng, cũng như quá trình giải mã.
Triển khai mã hóa và giải mã DES: Phát triển một ứng dụng thực tế để thực hiện
mã hóa và giải mã DES trên hai thiết bị, ví dụ như điện thoại di động và máy tính cá nhân.
Xác định các vấn đề bảo mật: Phân tích các lỗ hổng bảo mật có thể xảy ra trong
quá trình truyền tin nhắn giữa hai thiết bị và đề xuất các biện pháp để bảo vệ
thông tin khỏi các cuộc tấn công như tin trộm hoặc phá hoại.
Thử nghiệm và đánh giá hiệu suất: Thực hiện các thử nghiệm để đánh giá hiệu
suất của hệ thống mã hóa và giải mã DES, bao gồm cả tốc độ và độ bảo mật. Mở
rộng và cải tiến: Nghiên cứu cách mở rộng dự án để bao gồm các thuật toán mã
hóa và giải mã khác như AES hoặc RSA, cũng như các phương pháp bảo mật thông tin mới nhất.
Tạo ra một sản phẩm hoặc dịch vụ: Cuối cùng, mục tiêu có thể là phát triển một
sản phẩm hoặc dịch vụ thương mại dựa trên nghiên cứu của bạn, cung cấp giải
pháp bảo mật tin nhắn cho các tổ chức hoặc cá nhân.
1.3 Phương pháp nghiên cứu của đề tài
Nghiên cứu lý thuyết: Bắt đầu bằng việc tìm hiểu về lý thuyết mã hóa và giải mã,
đặc biệt là về thuật toán DES. Nắm vững các nguyên lý cơ bản của DES và các
phương pháp bảo mật thông tin.
Phân tích yêu cầu: Xác định các yêu cầu cụ thể cho hệ thống bảo mật tin nhắn
giữa hai thiết bị, bao gồm cả tính bảo mật, tính linh hoạt và hiệu suất.
Thiết kế hệ thống: Phát triển một hệ thống mã hóa và giải mã dựa trên thuật toán
DES, cũng như các giao thức và phương tiện truyền tin nhắn thích hợp để bảo vệ thông tin. lOMoAR cPSD| 60701415
Thử nghiệm và đánh giá: Tiến hành các thử nghiệm để đánh giá hiệu suất và độ
bảo mật của hệ thống trong các tình huống khác nhau, bao gồm cả truyền tin qua mạng không an toàn.
Đánh giá rủi ro và phản ứng: Xác định các rủi ro bảo mật tiềm ẩn và phản ứng
thích hợp, bao gồm cả cách xử lý cuộc tấn công và cách cải thiện hệ thống để ngăn chặn chúng.
So sánh và phân tích: So sánh hiệu suất và tính bảo mật của hệ thống với các
phương pháp mã hóa và bảo mật khác để đánh giá tính cạnh tranh và sự ưu việt
của nghiên cứu của bạn.
Viết báo cáo và công bố: Tổng hợp kết quả nghiên cứu và viết báo cáo hoặc bài
báo khoa học để chia sẻ kiến thức và kết quả của bạn với cộng đồng nghiên cứu.
1.4 Bố cục của đề tài Giới thiệu:
Trình bày vấn đề nghiên cứu và lý do quan trọng của đề tài.
Đưa ra mục tiêu và phạm vi của nghiên cứu.
Tóm tắt cấu trúc của báo cáo. Nền tảng lý thuyết:
Mô tả về thuật toán DES và cơ chế hoạt động của nó.
Giới thiệu về các khái niệm cơ bản trong bảo mật thông tin. Công nghệ và công cụ:
Giới thiệu các công nghệ và công cụ được sử dụng trong quá trình nghiên cứu,
bao gồm ngôn ngữ lập trình, framework, và các thư viện mã nguồn mở. Thiết kế hệ thống:
Trình bày kiến trúc của hệ thống mã hóa và giải mã tin nhắn giữa hai thiết bị. Mô
tả cụ thể về cách thức triển khai thuật toán DES trong hệ thống.
Thực hiện và thử nghiệm:
Mô tả về quá trình triển khai hệ thống và các thử nghiệm được thực hiện để đánh
giá hiệu suất và độ bảo mật.
Trình bày kết quả thu được và phân tích.
Đánh giá và thảo luận: lOMoAR cPSD| 60701415
Phân tích kết quả thử nghiệm và đánh giá tính khả thi của hệ thống.
Thảo luận về ưu điểm, hạn chế và hướng phát triển tiếp theo của đề tài. Kết luận:
Tóm tắt lại những điểm chính của nghiên cứu và đưa ra những kết luận chính. Đề
xuất hướng phát triển tiếp theo và công cụ thực hiện. Tài liệu tham khảo:
Liệt kê các tài liệu và nguồn thông tin được tham khảo trong quá trình nghiên cứu. Phụ lục (nếu cần):
Bao gồm các thông tin bổ sung như mã nguồn, bảng dữ liệu, hoặc các chi tiết kỹ thuật khác.
1.5 .Giới thiệu thuật toán DES
Thuật toán DES được sử dụng để mã hóa và giải mã các block (khối) dữ
liệu 64 bit dựa trên một key (khóa mã) 64 bit. Chú ý, các block được đánh số thứ
tự bit từ trái sang phải và bắt đầu từ 1, bit đầu tiên bên trái là bit số 1 và bit cuối
cùng bên phải là bit số 64. Quá trình giải mã và mã hóa sử dụng cùng một key
nhưng thứ tự phân phối các giá trị các bit key của quá trình giải mã ngược với quá trình mã hóa.
Một block dữ liệu sẽ được hoán vị khởi tạo (Initial Permutation) IP trước khi
thực hiện tính toán mã hóa với key. Cuối cùng, kết quả tính toán với key sẽ được
hoán vị lần nữa để tạo ra , đây là hoán vị đảo của hoán vị khởi tạo gọi là (Inverse
Initial Permutation) IP-1. Việc tính toán dựa trên key được định nghĩa đơn giản
trong một hàm f, gọi là hàm mã hóa, và một hàm KS, gọi là hàm phân phối key
(key schedule). Hàm KS là hàm tạo ra các khóa vòng (round key) cho các lần lặp
mã hóa. Có tất cả 16 khóa vòng từ 1 đến K16. lOMoAR cPSD| 60701415
Ở hình 1.1. nói rằng ……
Hình 1. Giải thuật mã hóa DES lOMoAR cPSD| 60701415
1.6 Hoán vị khởi tạo
IP Hoán vị là thay đổi ví trí các bit trong một chuỗi giá trị nhưng không làm
thay đổi giá trị của các bit này. Đây là bước đầu tiên trong quy trình mã hóa dữ
liệu. 64 bit dữ liệu đầu vào, gọi là plaintext, sẽ được hoán vị theo bảng mô tả sau đây.
Hình 2. Sơ đồ hoán vị khởi tạo, kí hiệu IP -
Chuỗi bit đầu vào được đánh số từ 1 đến 64 (tính từ trái qua phải). Sau đó,
cácbit này được thay đổi vị trí như sơ đồ IP, bit số 58 được đặt vào vị trí đầu tiên,
bit số 50 được đặt vào vị trí thứ 2. Cứ như vậy, bit thứ 7 được đặt vào vị trí cuối cùng. -
Sau hoán vị, chuỗi bit mới được phân ra làm hai đoạn, mỗi đoạn 32 bit để
bắtđầu vào quy trình tính toán mã hóa với key. Đoạn bên trái ký hiệu là L, đoạn
bên phải ký hiệu là R. Đoạn L gồm các bit từ bit số 1 đến bit số 32, đoạn R gồm
các bit từ bit số 33 đến bit số 64. Đoạn L của lần tính toán sau sẽ chính là đoạn R
của lần tính toán trước. Đoạn R của lần tính toán sau sẽ được tính từ đoạn R trước
đó qua hàm mã hóa f(R, K) rồi XOR với đoạn L của lần tính trước đó. lOMoAR cPSD| 60701415
Hình 3. Tính toán hàm mã hóa f(R,K)
Đầu tiên, 32 bit của đoạn R được đánh số từ 1 đến 32 theo thứ tự từ trái qua phải.
Giá trị này sẽ được chuyển đổi thông qua bảng tra E để tạo thành một giá trị 48
bit. Bit đầu tiên trong chuỗi giá trị 48 bit là bit số 32 của R, bit thứ 2 là bit số 1
của R, bit thứ 3 là bit số 2 của R và bit cuối cùng là bit số 1 của R. lOMoAR cPSD| 60701415 Hình 4. Bảng tra E
Sau khi tra bảng E, giá trị 48 bit được XOR với 48 bit của khóa vòng (cách tạo ra
khóa vòng 48 bit sẽ được trình bày sau). Kết quả phép XOR được chia làm 8
block được đánh số từ 1 đến 8 theo thứ tự từ trái qua phải, mỗi block 6 bit. Mỗi
block sẽ được biến đổi thông qua các hàm lựa chọn riêng biệt. Tương ứng với 8
block sẽ có 8 hàm chuyển đổi (selection function) riêng biệt là S1, S2, S3, S4, S5, S6, S7 và S8.
Hình 5. Các hàm S (selection fuction) lOMoAR cPSD| 60701415
Việc chuyển đổi giá trị của các hàm S1, S2, ..., S8 được thực hiện bằng cách tách
block 6 bit thành hai phần. Phần thứ nhất là tổ hợp của bit đầu tiên và bit cuối
cùng của block để tạo thành 2 bit chọn hàng của bảng S, bảng S có 4 hàng được
đánh số từ 0 đến 3 theo thứ tự từ trên xuống. Phần thứ 2 là 4 bit còn lại dùng để
chọn cột của bảng S, bảng S có 16 cột được đánh số từ 0 đến 15 theo thứ tự từ
trái qua phải. Như vậy, với mỗi block 8 bit ta chọn được 1 giá trị trong bảng S.
Giá trị này nằm trong khoảng từ 0 đến 15 sẽ được quy đổi thành chuỗi nhị phân
4 bit tương ứng. Các chuỗi nhị phân có được sau khi chuyển đổi từ S1 đến S8 sẽ
được ghép lại theo thứ tự từ trái qua phải để tạo thành một giá trị 32 bit.
Ví dụ về việc thực hiện chuyển đổi hàm S, giả sử, giá trị block 6 bit đầu tiên là
011011. Ta tách chuỗi này ra làm hai tổ hợp giá trị là 01 (bit đầu tiên và bit cuối
cùng) và 1101 (4 bit ở giữa). Hai tổ hợp này được dùng để chọn hàng và cột
tương ứng như hình minh họa sau:
Hình 7. Minh họa việc sử dụng hàm S1
Tổ hợp 01 sẽ chọn hàng 1, tổ hợp 1101 sẽ chọn cột 13 và kết quả trả về là 5 có
giá trị nhị phân 4 bit là 0101. Qua bước chuyển đổi với các hàm lựa chọn S, kết
quả thu được là một giá trị 32 bit. Giá trị này được đưa qua một hàm hoán vị P
để tạo ra giá trị hàm f.
Hình 7. Hoán vị P trong thuật toán tính hàm mã hóa f(R,K) lOMoAR cPSD| 60701415
Giá trị 32 bit thu được từ các chuyển đổi với hàm lựa chọn S sẽ được đánh số từ
1 đến 32 theo thứ tự từ trái qua phải. Theo bảng hoán vị P, bit đầu tiên sau hoán
vị sẽ là bit số 16, bit thứ 2 sẽ là bit số 7 và bit cuối cùng sẽ là bit số 25. Hàm tính
toán mã hóa f(R, K) được định nghĩa như sau: Trong đó: - P(): là phép hoán vị P
- Sn: là phép chuyển đổi block n (n chạy từ 1 đến 8) với hàm lựa chọn S
- Bn: là block 6 bit thứ n (n chạy từ 1 đến 8). Block này lấy từ phép toán
XOR -giữa khóa vòng K và giá trị hàm E(R)
- E(R): là hàm chuyển đổi giá trị R 32 bit thành giá trị 48 bit
1.7 Tính khóa vòng - KS
Một key có 64 bit nhưng chỉ có 56 bit được sử dụng để thực hiện tính toán giá trị
khóa vòng. Key được chia làm 8 byte. Các bit ở vị trí 8, 16, 32, 40, 48, 56 và 64
là các bit parity được sử dụng để kiểm tra độ chính xác của key theo từng byte vì
khi key được phân phối trên đường truyền đến bộ mã hóa giải mã thì có thể xảy
ra lỗi. Parity được sử dụng là parity lẻ (odd parity). lOMoAR cPSD| 60701415
Hình 8. Thuật toán tính khóa vòng
Key gốc sẽ được thực hiện hoán vị lựa chọn PC-1. Key được đánh số từ 1 đến 64
theo thứ tự từ trái qua phải. lOMoAR cPSD| 60701415
Hình 9. Bảng hoán vị lựa chọn PC-1
Bảng hoán vị lựa chọn PC-1 có hai phần. Phần đầu dùng để xác định giá trị C0 và
phần sau dùng để xác định giá trị D0. Theo bảng trên thì C0 là chuỗi bit có thứ tự
là 57, 49, 41, ..., 36 lấy từ key gốc, D0 là chuỗi bit có thứ tự là 63, 55, 47, ..., 4 lấy
từ key gốc. Sau khi xác định được giá trị ban đầu để tính key là C0 và D0 thì các
khóa vòng Kn (với n từ 1 đến 16) sẽ được tính theo nguyên tắc giá trị của khóa
vòng thứ n sẽ được tính từ giá trị khóa vòng thứ n-1.
Trong đó Cn và Dn được tạo từ Cn-1 và Dn-1 bằng cách dịch trái các giá trị này
với số bit được quy định trong bảng sau đây:
Hình 10. Bảng quy định số bit dịch trái khi tính khóa vòng
Ví dụ, theo bảng trên, C3 và D3 có được từ C2 và D2 bằng cách dịch trái 2 bit.
Hay C16 và D16 có được từ C15 và D15 bằng cách dịch trái 1 bit. Dịch trái ở
đây được hiểu là quay trái như minh họa sau đây: lOMoAR cPSD| 60701415
Hình 11. Minh họa phép dịch trái khi tính khóa vòng
Sau khi tính được Cn và Dn thì chuỗi CnDn sẽ được đánh số từ 1 đến 56 theo thứ
tự từ trái sang phải và được hoán vị lựa chọn lần 2 theo bảng hoán vị PC-2.
Hình 12. Bảng hoán vị lựa chọn PC-2
Như vậy bit đầu tiên của khóa vòng Kn là bit số 14 của chuỗi CnDn, bit thứ 2 là
bit số 17 của chuỗi CnDn và bit cuối cùng là bit số 32 của chuỗi CnDn.
1.8 Hoán vị khởi tạo đảo IP-1
Đây là bước cuối cùng để tạo ra giá trị mã hóa. Giá trị của lần lặp mã hóa cuối
cùng sẽ được hoán vị khởi tạo đảo IP-1 và tạo ra giá trị mã hóa plaintext. lOMoAR cPSD| 60701415
Hình 13. Bảng hoán vị khởi tạo đảo IP-1
Chương II. Giới thiệu ứng dụng mô phỏng quá trình mã hóa
Giới thiệu chương trình:
Chương trình được viết bằng ngôn ngữ Java, lập trình hướng đối tượng, có giao diện mô phỏng . Chức năng:
- Hiển thị các ma trận PC1, PC2 và 16 vòng trong quá trình tạo khóa -
Hiển thị quá trình mã hóa khóa, tạo ra 16 khóa phục vụ quá trình mã.
- Hiển thị ma trận IP, IP_1, E, P, S1 đến S8
- Chỉ hỗ trợ mã hóa chuỗi 8 ký tự
- Hiển thị quá trình xử lý chuỗi nhập vào và biến đổi, mã hóa
1. Lớp xử lý chuỗi StringAndChar + stringToHexa () + hexaToBinary () + hexaToString () Class: StringAndChar lOMoAR cPSD| 60701415
+ stringToHexa: Chuyển chuỗi nhập vào thành chuỗi hexa (Mỗi ký tự chuyển
thành nhóm số hexa có 2 chữ số).
+ hexaToBinary: Chuyển chuỗi hexa thành chuỗi nhị phân, mỗi ký tự hexa
chuyển thành 1 nhóm số nhị phân có 4 chữ số .
+ hexaToString: Chuyển chuỗi hexa thành chuỗi ký tự thông thường, 2 chữ số
hexa nhóm lại 1 nhóm và chuyển thành ký tự. 2. Lớp sinh khóa MyKey + stringKey + hexStringKey + binaryStringKey + binaryArrayKey + list16Key + k16Round + PC 1 + PC 2 + createKey () + createk16Round () + permutations ()  Thuộc tính:
+ stringKey: Chuỗi có 8 ký tự nhập vào để tạo khóa
+ hexaStringKey: Khóa stringKey sau khi đã chuyển thành mã hexa.
+ binaryStringKey: Chuỗi nhị phân tạo từ chuỗi hexa trên.
+ list16Key: Danh sách 16 khóa được tạo thành.
+ k16Round: Danh sách 16 vòng phục vụ quá trình tạo 16 khóa.
+ PC1, PC2: Ma trận phục vụ quá trình hoán vị, tạo khóa.  Phương thức:
+ createKey(): Tạo ra 16 khóa
+ createk16Round(): Tạo 16 vòng cho quá trình tạo khóa.
+ permutations(): phương thức hoán vị. lOMoAR cPSD| 60701415
3. Lớp mã hóa dữ liệu MyEncrypt + stringKey + stringInput + hexStringInput + binaryStringInput + stringOutDecimal + stringOutHexa + stringOut + binaryArrayStringInput + binaryArrayIP + L0, R0 + L16 , R16 + RL16 + RL16_IP_1 + IP, IP_1, E, P, S1 ... S8 + createEncrypt() + functionF() + Sto4bit() + myXor() - Thuộc tính:
+ stringKey: Key để mã hóa
+ stringInput: Bản rõ là chuỗi có 8 ký tự nhập vào để mã hóa.
+ hexStringInput: Bản rõ sau khi chuyển thành mã hexa.
+ binaryStringInput: Bản rõ sau khi đã chuyển thành mã nhị
phân. + stringOutDecimal: Bản mã ở dạng dãy thập phân
(ASCII) + stringOutHexa: Bản mã ở dạng chuỗi hexa.
+ stringOut: Bản mã ở dạng chuỗi thông thường.
+ binaryArrayStringInput: Mảng chứa các chữ số nhị phân tách từ binaryStringInput.
+ binaryArrayIP: Chứa kết quả sau khi binarryArrayStringInput hoán vị qua IP .
+ L0, R0: Tách đôi ra từ binaryArrayIP
+ L16 , R16: Kết quả sau 16 vòng lặp cùng 1 hàm xác định (F)
+ RL16: Gộp lại 2 mảng từ L16 và R16 lOMoAR cPSD| 60701415
+ RL16_IP_1: Hoán vị RL16 qua IP_1, cũng chính là bản mã dạng mã nhị phân.
+ IP, IP_1, E, P, S1 ... S8: Các mảng 1 chiều và 2 chiều cần cho quá
Trình mã hóa (các mảng này là hằng số). - Phương thức:
+ createEncrypt(): Phương thức chính thực hiện quá trình.Mã hóa, hoạt động
bằng cách thực hiện xử lý các chuỗi vào ra, xử lý các bit nhị phân , có sử dụng
các phương thức phía dưới, trả về 1 mảng 32 bit nhị phân.
+ functionF(): Hàm F, xử lý đầu vào là Ri và khóa Ki .
+ Sto4bit(): phương thức được sử dụng để phục vụ quá trình làm việc của
functionF(). Nó xử lý đầu vào là 6 bit nhị phân,các ma trận 2 chiều (chính là
8 hộp Sbox), trả về 4 bit nhị phân.
+ myXor(): Xor lần lượt thứ tự các phần tử của 2 mảng chứa các chữ số nhị
phân. Trả về là 1 mảng các chữ số nhị phân!
4. Giao diện chương trình