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 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 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
Trang 1ĐẠ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
Trang 2Mụ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 CÁC CHỨC NĂNG ( BIỂU ĐỒ CA SỬ DỤNG): 20
2.2 THIẾT KẾ CƠ SỞ DỮ LIỆU: 21
2.3 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 DEMO API: 30
4.2 GIA DIỆN VÀ CÁC CHỨC NĂNG CỦA WEB: 35
4.3 ĐÁNH GIÁ CHUNG: 38
4.4 KẾT CHƯƠNG: 38
Trang 3KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 39
1 KẾT QUẢ ĐẠT ĐƯỢC 39
2 HƯỚNG PHÁT TRIỂN 39
TÀI LIỆU THAM KHẢO 40
PHỤ LỤC 41
Trang 4DANH 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
HTTP,HTTP
S Hypertext Transfer Protocol, Hypertext Transfer ProtocolSecure
Trang 5MỞ ĐẦ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ấtnhiề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ọ Khicòn học THPT em cũng có tham gia các group facebook về các hội thi giải mã vớinhau Mọi người trong hội có thể đăng bài, đề mẫu cho các thành viên trong groupgiả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ạngcho 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ộttậ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ũnggiú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
Trang 64 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.
Trang 7CHƯƠ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ácmó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ầutớ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 racho 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ớinhà bếp và mang đồ ăn ra cho bạn
Trang 8API 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ênhữ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 đượcthiế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ácAPI đượ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áchrất đơn giản và nhanh chóng Nó cũng có khả năng hỗ trợ đầy đủ các thành phầnHTTP: 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
Trang 9Web 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áychủ 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ácthự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ứcHTTP/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ệuJSON/XML sẽ được parse để lấy data Sau khi có được data thì thực hiện tiếp cáchoạ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ảngnhư 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ệulư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 quangôn ngữ truy vấn MongoDB
Trang 10Một số câu lệnh cơ bản trên MongoDB
Tạo csdl CREATE DATABASE test; use test;
Tạo bảng CREATE TABLE students
(ten_cot - kieu_du_lieu);
db.createCollection('students');
Tạo bản ghi INSERT INTO studetns
('name', 'gender')VALUES('thanh', 'male');
db.students.insert({ name:'thanh', gender: 'male'});
Cập nhật UPDATE students SET
name = 'thanh update'WHERE id = 1;
db.students.update({ _id: 1 },{$set:{ name: 'thanhupdate' }});
Xóa bản ghi DELETE FROM students
Ư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ộtcollection 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ư trongRDBMS 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áiniệ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:
Trang 11Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấnthô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 nhanhhơ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ảihế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
Trang 12Khi 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ừ RAMxuố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 racá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ườnghợ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.
Ngoà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 luôn 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ế.
Trang 13Tó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 mobilehoặ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 stackcô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ácqui ướ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ữachúng Giao thức này cho phép một web server nhận thông tin - các request - đượcgử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 đượcviế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 tinqua 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 (serverresponse)
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 UniformResource Locator và được sử dụng để xác định địa chỉ tài nguyên trên Web
Trang 14Mộ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ặcphiê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ủatài nguyên 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ữacác tài nguyên (VD myBlog/blog/comments) nơi blog và các comment là 2 tàinguyê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 value, cái có thể được sử dụng bởi server để xác định tài nguyên, hoặc lọc một danhsách các tài nguyên
key-Fragment: fragment đề cập tới một khu vực trong tài nguyên và thường được áp dụngcho 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àiliệu HTML trình duyệt sẽ cuộn tới phần tử được xác định bởi anchor (thẻ <a>) Cácfragment cũng được đề cập như các anchor (thẻ <a>)
Trang 15HTTP điều này tương đương với việc tạo các request POST, DELETE, PUT hoặcGET 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ámphá các phương thức này khi nói về REST trong phần tới.
Ngoà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ácphươ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 HEADrequest 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 metadata, nhưng không có response body Điều này hữu ích bởi vì nó cung cấp một cáchnhanh 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 toàn haykhông an toàn Một phương thức được gọi là an toàn nếu nó không chỉnh sửa tàinguyên Nói cách khác, request là các thao tác "chỉ đọc (read-only)" Ví dụ, tạo mộtGET (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 toà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 Ngoà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àinguyê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 đầutiên được thực hiện
Trang 16Cá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ộtweb server, tôi sẽ mong muốn thấy một response với mã trạng thái mô tả request củatô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 requestthấ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ạiphổ 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 trongrequest Đ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ộttà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èmtheo một mô tả ngắn gọn về nguyên 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 tincho 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ẳnghạn chính sách cache (cache policy) cho response, các loại response được client chấpnhậ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ũngthườ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ênclient và lấy chúng với cùng cơ chế
Trang 17Headers 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 hoàn toà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ínhhoặ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 trongnhữ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ủamậ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ẽ
Trang 18thay 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 xuyên 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ảnchữ 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
Trang 19Kết quả số hóa của quá 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
Trang 20cá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ớicá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
– 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
Trang 211.3 KẾT CHƯƠNG
Chương này trình bày về kiến thứ Api, giao thức hoạt động cụ thể về WebAPI.Cách một client chạy font-end gọi một api để lấy và làm việc với dữ liệu từ Database
cụ thể ở đây là MongoDB