ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THƠNG TIN
Bộ mơn Mạng & Truyền Thơng
BÁO CÁO MƠN HỌC
ĐỒ ÁN 3: CƠ SỞ NGÀNH MẠNG
ĐỀ TÀI :
Xây dựng ứng dụng web thực hiện chức năng mã
hóa Hill, Playfair, Vigenère và Crypto Club
Mục lục
DANH SÁCH TỪ VIẾT TẮT.........................................................................................3
MỞ ĐẦU ……………………………………………………………………………………
4
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT..............................................................................6
1.1.TỔNG QUAN VỀ LÝ THUYẾT LẬP TRÌNH VÀ LÝ THUYẾT MẠNG:.....6
a.
API là gì?...............................................................................................6
b.
Web API là gì?......................................................................................7
c.
Vài điều về MongoDB:.........................................................................8
d.
RESTful Services: Tóm tắt về HTTP..................................................11
1.2. CÁC KIẾN THỨC VỀ MẬT MÃ HỌC:.....................................................16
a.
Mật mã thay thế Caesar:......................................................................16
b.
Mật mã Vigenere:................................................................................17
c.
Mật mã Playfair:..................................................................................18
1.3. KẾT CHƯƠNG............................................................................................19
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG.................................................20
2.1.
2.2.
2.3.
CÁC CHỨC NĂNG ( BIỂU ĐỒ CA SỬ DỤNG):.....................................20
THIẾT KẾ CƠ SỞ DỮ LIỆU:.....................................................................21
KẾT CHƯƠNG............................................................................................21
CHƯƠNG 3: TRIỂN KHAI VÀ THỰC HIỆN...........................................................22
3.1.
CÁC MƠI TRƯỜNG LÀM VIỆC VÀ CƠNG CỤ THỰC HIỆN:.............22
a.
Mơi trường làm việc:...........................................................................22
b.
Công cụ thực hiện:...............................................................................22
3.2. TỔ CHỨC CƠ SỞ DỮ LIỆU TRÊN MONGODB:....................................22
3.3. TRIỂN KHAI MVC TRÊN API SERVER VÀ CÁC PHƯƠNG THỨC
CHÍNH CỦA API:.................................................................................................26
a.
Xử lý Authorization bằng JWT:..........................................................26
b.
Xử lý quan hệ khi thay đổi record:......................................................27
3.4. CÁC CHỨC NĂNG CỦA WEB:................................................................29
3.5. KẾT CHƯƠNG............................................................................................29
CHƯƠNG 4: SẢN PHẨM VÀ ĐÁNH GIÁ................................................................30
4.1.
4.2.
4.3.
4.4.
DEMO API:.................................................................................................30
GIA DIỆN VÀ CÁC CHỨC NĂNG CỦA WEB:.......................................35
ĐÁNH GIÁ CHUNG:..................................................................................38
KẾT CHƯƠNG:...........................................................................................38
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN.....................................................................39
1.
2.
KẾT QUẢ ĐẠT ĐƯỢC...............................................................................39
HƯỚNG PHÁT TRIỂN...............................................................................39
TÀI LIỆU THAM KHẢO.............................................................................................40
PHỤ LỤC.........................................................................................................41
DANH SÁCH TỪ VIẾT TẮT
Từ viết tắt
Diễn giải
IP
Internet Protocol
MD5
Message-Degist Algorithm 5
SHA
Secure Hash Algorithm
API
Application Programming Interface
URL
Uniform Resource Locator
JWT
jsonwebtoken
HTTP,HTTP
S
Hypertext Transfer Protocol, Hypertext Transfer Protocol
Secure
MỞ ĐẦU
1. Tổng quan về đề tài
Hiện nay nhu cầu về các cộng đồng trên mạng là rất lớn và đa dạng. Có rất
nhiều cộng đồng về học tập ngoại ngữ, các kĩ năng sống. Qua các cộng đồng đó có
thể tập họp mọi người cùng sở thích lại, trong đó mọi người có thể tham gia các hoạt
động mà tổ chứ đặc thù để chia sẽ kiến thức, lan tỏa ý nghĩa của đam mê của họ. Khi
còn học THPT em cũng có tham gia các group facebook về các hội thi giải mã với
nhau. Mọi người trong hội có thể đăng bài, đề mẫu cho các thành viên trong group
giải đáp và thảo luận với nhau. Nhưng mọi hoạt động trong group đều thực hiện thủ
công nên cũng có nhiều vấn đề khác như cập nhật điểm câu trả lời và update xếp hạng
cho mọi người. Do đó em tạo mọi trong web giúp mọi người khi tham gia vào có thể
cùng xây dựng một cộng đồng thích mật mã cho riêng người Việt Nam.
2. Mục đích và ý nghĩa của đề tài
2.1. Mục đích
Tạo một sân chơi, một cộng đồng cho tất cả các bạn yêu thích về mật mã học có
thể cùng trao đổi và đăng các bài toán mật mã hay để mọi người tham gia giải mã
nâng cao hiểu biết về mật mã học.
2.2. Ý nghĩa
Giúp cho cộng đồng những người yêu thích về mật mã học có một sân chơi một
tập hợp những người cùng đam mê lại để cùng phát triển đam mê của nhau và cũng
giúp các các bạn khác nếu muốn tham gia tìm hiểu và nghiên cứu về mật mã học sẽ
có một cộng động hỗ trợ.
3. Phương pháp thực hiện
Phương pháp phân tích tổng hợp từ tài liệu
Phương pháp phân tích thiết kế hệ thống
TRẦN CHÍ VĨ
5
4. Bố cục của đồ án
Đồ án bao gồm các nội dung sau:
Mở đầu
Chương 1: trình bày cơ sở lý thuyết.
Chương 2: trình bày phân tích thiết kế hệ thống.
Chương 3: trình bày quy trình triển khai và thực hiện.
Chương 4: trình bày kết quả sản phẩm và đánh giá.
Kết luận và hướng phát triển.
Tài liệu tham khảo và mã nguồn chương trình.
TRẦN CHÍ VĨ
6
CHƯƠNG 1:
CƠ SỞ LÝ THUYẾT
1.1. TỔNG QUAN VỀ LÝ THUYẾT LẬP TRÌNH VÀ LÝ THUYẾT MẠNG:
a. API là gì?
- API là viết tắt của Application Programming Interface (giao diện lập trình ứng
dụng), là phần mềm trung gian cho phép 2 ứng dụng giao tiếp với nhau. Mỗi khi sử
dụng các ứng dụng, chẳng hạn như Facebook, hoặc các ứng dụng gửi tin nhắn tức thì
hoặc kiểm tra thời tiết trên điện thoại, đồng nghĩa với việc bạn đang sử dụng API.
Nếu bạn vẫn cịn thắc mắc API là gì, thì hãy cùng Taimienphi.vn tìm hiểu dưới đây.
- Ví Dụ Về API: Khi sử dụng ứng dụng trên thiết bị di động, ứng dụng sẽ kết nối
Internet và gửi dữ liệu tới máy chủ. Sau đó máy chủ lấy dữ liệu, diễn giải dữ liệu,
thực hiện các hành động cần thiết và gửi dữ liệu trở lại thiết bị của bạn. Ứng dụng
giải thích dữ liệu và hiển thị các thông tin đọc được cho bạn. Và nó được gọi là API.
- Để giải thích rõ hơn, tham khảo ví dụ dưới đây:
Thử tưởng tượng bạn đang ở trong một nhà hàng, và menu có 1 loạt các món ăn để
bạn lựa chọn. Nhà bếp là một phần của hệ thống, thực hiện nhiệm vụ chuẩn bị các
món mà bạn đặt. Cái cịn thiếu ở đây là người để truyền đạt món ăn mà bạn yêu cầu
tới nhà bếp và mang đồ ăn ra cho bạn. Đó chính là người phục vụ hoặc có thể nói là
API. Người phục vụ sẽ truyền đạt các yêu cầu của bạn tới nhà bếp và mang đồ ăn ra
cho bạn.
-
Ngoài Ra API Cũng Cung Cấp Lớp Bảo Mật: Các dữ liệu trên điện thoại
của bạn không bao giờ được tiếp xúc hoàn toàn với máy chủ, và tương tự máy chủ
không bao giờ tiếp xúc với điện thoại. Thay vào đó các thiết bị giao tiếp vơi các gói
dữ liệu nhỏ, chỉ chia sẻ những thứ cần thiết, giống như đặt hàng. Khi bạn nói với
nhân viên nhà hàng những món mà bạn muốn ăn, họ sẽ truyền đạt yêu cầu của bạn tới
nhà bếp và mang đồ ăn ra cho bạn.
TRẦN CHÍ VĨ
7
API trở nên giá trị hơn, chiếm 1 phần lớn doanh thu của các doanh nghiệp. Các
công ty lớn như Google, eBay, Salesforce.com, Amazon và Expedia chỉ là một vài
trong số các cơng ty kiếm tiền từ API. Những gì “nền kinh tế API” đề cập đến là thị
trường của API.
- API Hiện Đại: Trong nhiều năm qua, API được mô tả là giao diện kết nối chung
với ứng dụng. Gần đây API hiện đại bổ sung một số tính năng mới, làm cho nó trở lên
hữu ích:
+ API hiện đại tuân thủ các chuẩn (thường là HTTP và REST), dễ sửu dụng, dễ
truy cập và dễ hiểu. Tham khảo bài viết HTML5 là gì tại đây
+ Các API này được xử lý giống như các sản phẩm nhiều hơn là code. Chúng được
thiết kế cho các đối tượng người dùng cụ thể (chẳng hạn như các nhà phát triển thiết
bị di động), và có các phiên bản cho người dùng và duy trì vịng đời của nó. Vì các
API được chuẩn hóa nhiều hơn nên vấn đề bảo mật và quản lý cũng nghiêm ngặt hơn,
cũng như các vấn đề theo dõi và quản lý hiệu suất, quy mô.
Giống như các sản phẩm phần mềm khác, API hiện đại cũng có vịng đời phát triển
phần mềm (SDLC) riêng từ thiết kế, thử nghiệm, xây dựng, quản lý và các phiên bản.
Ngoài ra các API hiện đại cũng được ghi lại cho người dùng và các phiên bản.
b. Web API là gì?
- Web API là một phương thức dùng để cho phép các ứng dụng khác nhau có thể
giao tiếp, trao đổi dữ liệu qua lại. Dữ liệu được Web API trả lại thường ở dạng JSON
hoặc XML thông qua giao thức HTTP hoặc HTTPS.
- Những điểm nổi bật của Web API: Web API hỗ trợ restful đầy đủ các phương
thức: Get/Post/put/delete dữ liệu. Nó giúp bạn xây dựng các HTTP service một cách
rất đơn giản và nhanh chóng. Nó cũng có khả năng hỗ trợ đầy đủ các thành phần
HTTP: URI, request/response headers, caching, versioning, content forma. Hỗ trợ đầy
đủ các thành phần MVC như: routing, controller, action result, filter, model binder,
IoC container, dependency injection, unit test.
TRẦN CHÍ VĨ
8
Web API hoạt động như thế nào?
Đầu tiên là xây dựng URL API để bên thứ ba có thể gửi request dữ liệu đến máy
chủ cung cấp nội dung, dịch vụ thông qua giao thức HTTP hoặc HTTPS.
Tại web server cung cấp nội dung, các ứng dụng nguồn sẽ thực hiện kiểm tra xác
thực nếu có và tìm đến tài nguyên thích hợp để tạo nội dung trả về kết quả.
Server trả về kết quả theo định dạng JSON hoặc XML thông qua giao thức
HTTP/HTTPS.
Tại nơi yêu cầu ban đầu là ứng dụng web hoặc ứng dụng di động , dữ liệu
JSON/XML sẽ được parse để lấy data. Sau khi có được data thì thực hiện tiếp các
hoạt động như lưu dữ liệu xuống Cơ sở dữ liệu, hiển thị dữ liệu…
c. Vài điều về MongoDB:
MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql
và được hàng triệu người sử dụng. MongoDB là một database hướng tài liệu
(document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng
như CSDL quan hệ nên truy vấn sẽ rất nhanh.
Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như
MySQL hay SQL Server...) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng
ta sẽ dùng khái niệm là collection thay vì bảng
So với RDBMS thì trong MongoDB collection ứng với table, cịn document sẽ
ứng với row , MongoDB sẽ dùng các document thay cho row trong RDBMS.
Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu
lưu trữ không cần tuân theo một cấu trúc nhất định.
Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thơng qua
ngơn ngữ truy vấn MongoDB.
TRẦN CHÍ VĨ
9
Một số câu lệnh cơ bản trên MongoDB
CSDL
MySQL
MongoDB
Tạo csdl
CREATE DATABASE test;
use test;
Tạo bảng
CREATE TABLE students
db.createCollection('students');
(ten_cot - kieu_du_lieu);
Tạo bản ghi
INSERT INTO studetns
db.students.insert({ name:'than
('name', 'gender')
h', gender: 'male'});
VALUES('thanh', 'male');
Cập nhật
Xóa bản ghi
UPDATE students SET
db.students.update({ _id: 1 },
name = 'thanh update'
{$set:{ name: 'thanh
WHERE id = 1;
update' }});
DELETE FROM students
db.students.remove({ _id: 1});
Where id = 1;
Tìm kiếm all
SELECT * FROM students;
db.students.find({});
Tìm kiếm
SELECT * FROM students
db.students.find({ name:
WHERE name = 'thanh';
'thanh' });
Ưu điểm của mongoDB.
Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một
collection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ
dữ liệu, nên bạn muốn gì thì cứ insert vào thoải mái.
Dữ liệu trong MongoDB khơng có sự ràng buộc lẫn nhau, khơng có join như trong
RDBMS nên khi insert, xóa hay update nó khơng cần phải mất thời gian kiểm tra xem
có thỏa mãn các ràng buộc dữ liệu như trong RDBMS.
MongoDB rất dễ mở rộng (Horizontal Scalability). Trong MongoDB có một khái
niệm cluster là cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ
thống ta chỉ cần thêm một node với vào cluster:
TRẦN CHÍ VĨ
10
Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn
thông tin đạt hiệu suất cao nhất.
Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ Ram, để phục vụ
lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng.
Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh
hơn hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). Với một lượng dữ
liệu đủ lớn thì thử nghiệm cho thấy tốc độ insert của MongoDB có thể nhanh tới gấp
100 so với MySQL.
Nhược điểm của mongoDB.
Một ưu điểm của MongoDB cũng chính là nhược điểm của nó. MongoDB khơng
có các tính chất ràng buộc như trong RDBMS nên khi thao tác với mongoDB thì phải
hết sức cẩn thận.
Tốn bộ nhớ do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về value
do đó key sẽ bị lặp lại. Không hỗ trợ join nên dễ bị dữ thừa dữ liệu.
TRẦN CHÍ VĨ
11
Khi insert/update/remove bản ghi, MongoDB sẽ chưa cập nhật ngay xuống ổ
cứng, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM
xuống ổ cứng điêù này sẽ là nhược điểm vì sẽ có nguy cơ bị mất dữ liệu khi xảy ra
các tình huống như mất điện...
Khi nào nên dùng MongoDB:
Ví dụ như các hệ thống realtime (thời gian thực) yêu cầu phản hồi nhanh, Các hệ
thống bigdata với yêu cầu truy vấn nhanh hay các hệ thống có lượng request lớn thì
MongoDB sẽ là sự lựa chọn ưu tiên hơn CSDL quan hệ. Tùy theo dự án và trường
hợp cụ thể để sử dụng CSDL quan hệ hay sử dụng MongoDB đem lại hiệu quả cao.
d. RESTful Services: Tóm tắt về HTTP
Các trang web từ lúc bắt đầu, được cấu trúc xung quanh ý tưởng các tài nguyên.
Trong những ngày đầu, web chỉ là một nền tảng cho việc chia sẻ các file text/HMTL,
tài liệu, hình ảnh, ...Theo cách này, web có thể được coi như một tập hợp các tài
nguyên và thường được gọi là hướng tài nguyên (resource-oriented).
Khi các trang web phát triển thành một mạng lưới phức tạp của các ứng dụng
liên kết với nhau, với nội dung phong phú. Các ứng dụng trở lên phức tạp, với nhiều
chức năng.
Các service cung cấp một phương tiện để khai thác các chức năng của các ứng
dụng web cho client. Nói chung, các ứng dụng lớn có thể cung cấp các chương trình
truy cập tới nền tảng của mình cho các lập trình viên khác và có thể làm điều đó
bằng cách sử dụng các service.
Ngồi ra, các service có thể được sử dụng để chia một ứng dụng thành nhiều đơn
vị logic khác nhau, tương tác với nhau để tạo ra kết quả cuối cùng. Trong trường hợp
này, một service hoạt động như một khách hàng của các service khác.
Các service là một thành phần quan trọng của các ứng dụng web, các lập trình viên
ln cố gắng và đảm bảo rằng chúng được thiết kế theo cách có thể mở rộng, hiệu
quả và tiết kiệm chi phí nhất có thể - cả về kỹ thuật và kinh tế.
TRẦN CHÍ VĨ
12
Tóm tắt về HTTP
Hầu hết các ứng dụng web được xây dựng xung quanh một mơ hình client-server.
Một client có thể là một cái gì đó đơn giản như trình duyệt web, một ứng dụng mobile
hoặc thậm chí các web service khác.
Tương tự, các server có thể được thực hiện theo nhiều cách, sử dụng các stack
công nghệ, ngôn ngữ khác nhau và phục vụ các kiểu dữ liệu khác nhau.
Để thích ứng với sự đa dạng này, các client và server phải đồng ý một tập hợp các
qui ước - cái gọi là giao thức (protocol) - nó áp dụng cho tất cả các kết nối giữa
chúng. Giao thức này cho phép một web server nhận thông tin - các request - được
gửi bởi client, xử lý chúng, và đáp trả thích hợp.
Các ứng dụng web ngày nay sử dụng Hypertext Transfer Protocol, thường được
viết tắt là HTTP, để trao đổi thông tin.
Về bản chất, điều này cung cấp một định dạng cấu trúc cho việc trao đổi thông tin
qua web. Như chúng ta sẽ thấy, HTTP đưa ra một tập hợp các hướng dẫn để mô tả
kiểu dữ liệu được trao đổi - cùng với định dạng, tính hợp lệ, và các thuộc tính khác.
Trong quá khứ, các ứng dụng thường dựa trên HTTP như một cơ chế truyền phát.
Các client và server trao đổi dữ liệu sử dụng HTTP. Các quy ước khác sau đó phải
được phát triển cho dữ liệu. Một ví dụ về mơ hình như vậy là SOAP, một trong những
đối thủ của REST.
Và điều tuyệt vời về HTTP là nó đã có các cấu trúc cần thiết cho các hành động cụ
thể với tài nguyên (client request), cũng như kết quả của các hành động (server
response).
URLs:
URL là một trong những khái niệm quan trọng và hữu ích nhất của Web. Nó cũng
là khái niệm quen thuộc với hầu hết người sử dụng. URL là viết tắt của Uniform
Resource Locator và được sử dụng để xác định địa chỉ tài nguyên trên Web.
TRẦN CHÍ VĨ
13
Một URL thường bao gồm các thành phần sau:
Giao thức (Protocol): đây là giao thức yêu cầu phục vụ. Thường là HTTP (hoặc
phiên bản bảo mật HTTPS). Các giao thức khác chẳng hạn SMTP và FTP có thể được
sử dụng thay thế, nhưng chúng ta sẽ chỉ giới hạn với HTTP.
Tên miền (Domain): đây là tên miền của máy chủ chứa tài nguyên. Tên miền có
thể được thay thế bằng địa chỉ IP, cái thường được sử dụng bởi một DNS.
Đường dẫn (Path): đây là vị trí của tài nguyên trên server. Nó có thể là vị trí của
tài ngun trong hệ thống (VD /search/files/myFile.txt) mặc dù điều này hiếm khi
được sử dụng trong thực tế. Cách phổ biến là các đường dẫn dựa trên quan hệ giữa
các tài nguyên (VD myBlog/blog/comments) nơi blog và các comment là 2 tài
nguyên khác nhau. Điều này sẽ được nói rõ hơn trong phần 2 của loạt bài này.
Các tham số (Parameters): đây là dữ liệu bổ sung, truyền trong định dạng keyvalue, cái có thể được sử dụng bởi server để xác định tài nguyên, hoặc lọc một danh
sách các tài nguyên.
Fragment: fragment đề cập tới một khu vực trong tài nguyên và thường được áp dụng
cho các tài liệu. Điều này có thể giống như đánh dấu trong tài liệu được trả lại và
hướng dẫn trình duyệt di chuyển tới nội dung tại điểm được đánh dấu. Ví dụ, các tài
liệu HTML trình duyệt sẽ cuộn tới phần tử được xác định bởi anchor (thẻ <a>). Các
fragment cũng được đề cập như các anchor (thẻ <a>).
Các phương thức HTTP:
HTTP định nghĩa một tập hợp các phương thức, cũng được gọi là "các động từ",
cái client sử dụng để miêu tả kiểu request được tạo.
Mỗi request có thể coi như một hành động cụ thể trên một tài nguyên. Ví dụ, một
client có thể request để thêm, xóa, cập nhật hoặc đơn giản đọc một tài nguyên. Trong
TRẦN CHÍ VĨ
14
HTTP điều này tương đương với việc tạo các request POST, DELETE, PUT hoặc
GET. POST và PUT chứa các dữ liệu để thêm mới hoặc cập nhật. Chúng ta sẽ khám
phá các phương thức này khi nói về REST trong phần tới.
Ngồi ra cịn có 2 phương thức ít sử dụng hơn là OPTIONS và HEAD.
Mục đích của một OPTIONS request là cung cấp cho client thông tin về các
phương thức có thể được sử dụng để tương tác với tài nguyên.
HEAD request là một trường hợp khác, nó hữu ích hơn một chút. Một HEAD
request bắt chiếc GET request, ngoại trừ nó bỏ qua body của response. Về bản chất,
client nhận một response giống hệt cái sẽ nhận từ một GET request, với cùng meta
data, nhưng khơng có response body. Điều này hữu ích bởi vì nó cung cấp một cách
nhanh chóng để kiểm tra các response header và sự tồn tại của tài nguyên.
Một điểm quan trọng của HTTP là nó phân biệt một phương thức an tồn hay
khơng an tồn. Một phương thức được gọi là an tồn nếu nó khơng chỉnh sửa tài
ngun. Nói cách khác, request là các thao tác "chỉ đọc (read-only)". Ví dụ, tạo một
GET (hoặc HEAD) request cho một tài nguyên trên một server sẽ khơng thay đổi nó.
Tất cả các phương thức khác mặc định là khơng an tồn.
Cuối cùng là khái niệm idempotent. Một phương thức HTTP được gọi là
idempotent nếu lặp lại một request dẫn tới cùng một kết quả. Giống như khi các tham
số của request không thay đổi, request có thể được tạo nhiều lần và tài nguyên có
trạng thái như khi request chỉ tạo một lần duy nhất.
GET, OPTIONS và HEAD là các phương thức idempotent tự nhiên, cũng như
chúng là các thao tác chỉ đọc. Ngồi ra các phương thức PUT và DELETE cũng được
mơ tả như idempotent. Điều này bởi vì cập nhật mọi tài nguyên với cùng một tham số
hết lần này đến lần khác dẫn tới cùng một kết quả cuối cùng.
Có thể hơi khó hiểu khi DELETE cũng là idempotent. Xem xét cái xảy ra với hệ
thống khi có nhiều DELETE request đồng thời. DELETE request đầu tiên sẽ xóa tài
nguyên. Tạo ra nhiều DELETE request lúc này sẽ không làm thay đổi trạng thái của
hệ thống. Hệ thống sẽ tiếp tục giữ nguyên trạng thái sau khi DELETE request đầu
tiên được thực hiện.
TRẦN CHÍ VĨ
15
Các mã trạng thái (Status Codes):
Các mã trạng thái của HTTP cung cấp thông tin về kết quả của một request và
cách để giải thích nó. Ví dụ, nếu chúng ta tạo một request để nhận một file từ một
web server, tôi sẽ mong muốn thấy một response với mã trạng thái mô tả request của
tôi đã thành công. Nếu không, mã trạng thái sẽ cung cấp cho tôi lý do tại sao request
thất bại.
HTTP định nghĩa nhiều mã trạng thái, mỗi cái có một ý nghĩa cụ thể. Một vài loại
phổ biến là:
2xx: Các mã trạng thái rơi vào series 2xx có nghĩa là request thành cơng và
khơng có lỗi. Mã 200 là ví dụ thường thấy.
3xx: Một mã trong series 3xx có nghĩa là chuyển hướng. Điều này có nghĩa là
máy chủ chuyển hướng đến một nơi khác để nhận request.
4xx: Một lỗi 4xx ví dụ 400, 403, 404, ... được sử dụng khi có một lỗi trong
request. Điều này có thể do nhiều nguyên nhân, chẳng hạn truy cập trái phép tới một
tài nguyên, hoặc tài nguyên không tồn tại, các tham số không hợp lệ, ...
5xx: Cuối cùng một response 5xx được sử dụng khi có lỗi ở phí server. Điều này
có nghĩa là server biết lỗi và không thể xử lý request. Thông thường, response kèm
theo một mơ tả ngắn gọn về ngun nhân có thể gây ra lỗi.
HTTP Headers:
Headers là một phần thiết yếu của một kết nối HTTP. Chúng cung cấp thông tin
cho việc xử lý các request và response. Chú ý header không liên quan tới việc xác
định tài nguyên. Chúng thường là các cặp key-value và cung cấp các thông tin chẳng
hạn chính sách cache (cache policy) cho response, các loại response được client chấp
nhận, ngơn ngữ ưa thích của response, mã hóa, ...
Thơng tin cho việc xác thực và cho phép - chẳng hạn các token truy cập - cũng
thường được truyền sử dụng Authorization header.
Tương tự, server cũng có thể sử dụng response headers để thiết lập các cookie trên
client và lấy chúng với cùng cơ chế.
TRẦN CHÍ VĨ
16
Headers của GET request tới medium.com/bookmarks
Chú ý với HTTPS: để tránh nhầm lẫn cũng cần hiểu sự khác biệt giữa HTTPS và
HTTP thường. Cả HTTP và HTTPS sử dụng cùng một cơ chế để truyền thông tin,
nhưng HTTPS bảo mật hơn. Dữ liệu truyền qua HTTPS được mã hóa hồn tồn. Đây
là một yếu tố quan trọng khi thơng tin cần giữ bí mật, chẳng hạn như dữ liệu tài chính
hoặc thơng tin cá nhân của người dùng.
1.2. CÁC KIẾN THỨC VỀ MẬT MÃ HỌC:
a. Mật mã thay thế Caesar:
Trong mật mã học, mật mã Caesar, còn gọi là mật mã dịch chuyển, là một trong
những mật mã đơn giản và được biết đến nhiều nhất. Mật mã Caesar là một dạng của
mật mã thay thế, trong đó mỗi ký tự trong văn bản được thay thế bằng một ký tự cách
nó một đoạn trong bảng chữ cái để tạo thành bản mã.
Ví dụ: Đối với bảng mã tiếng anh (ABCDEFGHI...), nếu độ dịch là 3, A sẽ được
thay bằng D, B sẽ được thay bằng E, ..., W sẽ thay bằng Z, X sẽ thay bằng A, Y sẽ
TRẦN CHÍ VĨ
17
thay bằng B và Z thay bằng C. Phương pháp được đặt tên theo Caesar, vị hoàng đế đã
sử dụng nó thường xun trong cơng việc. Khơng gian bản rõ P là các từ cần được mà
hóa được tạo từ bảng chữ cái A. Không gian bản rỏ C là các từ đã được mã hóa.
Để mã hóa, người ta đánh số các chữ cái từ 0N-1 (N là tổng số phần tử của bản
chữ cái). Khơng gian khóa K=ZN. Với mỗi khóa K K hàm mã hóa và giải mã một
ký tự có số thứ tự là I sẽ được biểu diễn như sau:
Mã hóa : EK(i) = (i+k) mod N b. Giải mã : DK(i) = (i-k) mod N
Cho bản rõ : TOIYEUVIETNAM Khóa k = 4
Tìm bản mã ? Theo cơng thức thay vào ta sẽ có kết quả sau.
Vậy bản mã là : YSMBYZWMIYREQ
Quá trình giải mã thì ngược lại với q trình mã hóa.
b. Mật mã Vigenere:
Mật mã Vigenère là một phương pháp mã hóa văn bản bằng cách sử dụng xen kẽ
một số phép mã hóa Caesar khác nhau dựa trên các chữ cái của một từ khóa. Nó là
một dạng đơn giản của mật mã thay thế dùng nhiều bảng chữ cái.
Ví dụ:
Giải mã thơng điệp sau
DYIOPUQGVNVGVBIYUGT
bằng mã Vigenere với khóa
TRẦN CHÍ VĨ
18
KHOACONGNGHETHONGTN
Với bộ chữ cái tiếng Anh (n = 26)
Số hóa bộ chữ cái:
Số hóa bảng mã:
Số hóa khóa:
Kết quả số hóa của q trình giải mã:
Tương ứng với thơng điệp:
c. Mật mã Playfair:
Mật mã Playfair là một hệ mã hóa nhiều chữ, giảm bớt tương quan giữa văn bản
mã hóa và nguyên bản bằng cách mã hóa đồng thời nhiều chữ cái của nguyên bản. Cơ
chế hoạt động như sau: sử dụng một ma trận chữ cái 5x5 trên cơ sở một từ khóa: điền
TRẦN CHÍ VĨ
19
các chữ cái của từ khóa (bỏ các chữ trùng), điền những vị trí cịn lại của ma trận với
các chữ cái khác của bảng chữ cái; I, J có thể ở trên cùng một ơ của ma trận.
Ví dụ: Ma trận với từ khóa MONARCHY
M O N A
R
C H Y B
D
E F
G I/J K
L P
Q S
U V W X
T
Z
•
Mã hóa 2 chữ cái một lúc
–
Nếu 2 chữ giống nhau, tách ra bởi 1 chữ điền thêm thường là X hoặc Q
Ví dụ: EE sẽ dược thay bởi EX
–
Nếu 2 chữ nằm cùng hàng, thay bởi các chữ bên phải
Ví dụ: EF sẽ thay bằng FG
–
Nếu 2 chữ nằm cùng cột, thay bởi các chữ bên dưới
Ví dụ: OF thay bằng HP
–
Các trường hợp khác, mỗi chữ cái được thay bởi chữ cái khác cùng hàng,
trên cột chữ cái cùng cặp
Ví dụ: ET sẽ thay bằng KL
TRẦN CHÍ VĨ
20