Giới thiệu dự án
Sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0 và chuyển dịch số trong ngành du lịch (TravelTech) đã làm thay đổi hoàn toàn hành vi của người tiêu dùng. Theo thống kê từ Tổng cục Du lịch và Hiệp hội Thương mại Điện tử Việt Nam (VECOM), hơn 80% khách du lịch nội địa tự lên kế hoạch và tìm kiếm dịch vụ lưu trú trực tuyến qua thiết bị di động, trong đó phân khúc homestay và du lịch trải nghiệm đạt mức tăng trưởng ấn tượng trên 30%/năm. Tuy nhiên, quy trình đặt phòng homestay truyền thống tại Việt Nam vẫn tồn tại nhiều rào cản: người dùng mất từ 30–45 phút gọi điện, nhắn tin kiểm tra tình trạng phòng qua mạng xã hội, đối mặt với rủi ro hủy phòng vào giờ chót hoặc thông tin không xác thực; trong khi các chủ homestay nhỏ lẻ gặp khó khăn trong quản lý lịch trống, quản lý đánh giá và phòng ngừa rủi ro khách "bùng" phòng (no-show).
Đồ án tốt nghiệp "Phát triển ứng dụng đặt phòng dịch vụ du lịch HomeStay trên nền tảng Android" do sinh viên Bùi Văn Phúc thực hiện dưới sự hướng dẫn của ThS. Nguyễn Văn Phác tại Khoa Công nghệ Thông tin – Học viện Kỹ thuật Mật mã đã giải quyết trực diện bài toán kết nối thời gian thực giữa khách du lịch, chủ cơ sở lưu trú và quản trị viên hệ thống.
+-------------------------------------------------------------------------------+
| MÔ HÌNH HỆ THỐNG HOMESTAY 2 PHÂN HỆ |
+-------------------------------------------------------------------------------+
|
+---------------------------------+---------------------------------+
| |
v v
+-----------------------------+ +-----------------------------+
| CLIENT APP (HomeStay) | | ADMIN APP (AdminHomeStay) |
+-----------------------------+ +-----------------------------+
| - Tourist: Tìm kiếm, Đặt | | - Quản trị User/Host |
| phòng, Review, Maps, Bão | <===[ Firebase BaaS ]==> | - Duyệt/Khóa tài khoản vi |
| - Host: Đăng phòng, Quản lý | (Realtime DB, Auth, | phạm qua cơ chế Report |
| trạng thái, Báo cáo spam | Storage, FCM Cloud) | - Quản lý TravelList dữ liệu|
+-----------------------------+ +-----------------------------+
Mục tiêu dự án
- Xây dựng bộ đôi ứng dụng di động native trên hệ điều hành Android (phân hệ Client cho Khách/Chủ nhà và phân hệ Admin cho Quản trị viên) bằng ngôn ngữ Kotlin với kiến trúc MVVM (Model-View-ViewModel).
- Tích hợp nền tảng Firebase BaaS (Backend-as-a-Service) nhằm xử lý cơ sở dữ liệu thời gian thực (Realtime Database), xác thực người dùng (Firebase Authentication), lưu trữ tệp tin đa phương tiện (Firebase Storage) và đẩy thông báo tức thời (Firebase Cloud Messaging - FCM).
- Triển khai các giải pháp an toàn bảo mật dữ liệu chuyên sâu: băm mật khẩu bảo vệ tài khoản, mã hóa đối xứng AES (Advanced Encryption Standard) để bảo vệ khóa API dịch vụ bên thứ ba (Weather API), cấu hình ProGuard chống dịch ngược mã nguồn (Reverse Engineering).
- Tích hợp các dịch vụ gia tăng trải nghiệm người dùng bao gồm bản đồ số định vị Google Maps SDK và thông tin dự báo thời tiết thời gian thực nhằm đảm bảo lộ trình du lịch an toàn.
Phạm vi và giới hạn hệ thống
- Phạm vi: Ứng dụng hỗ trợ các thiết bị chạy hệ điều hành Android từ phiên bản 7.0 (API Level 24 - Nougat) trở lên, phục vụ thị trường du lịch nội địa với danh mục dữ liệu bao phủ các tỉnh thành và địa điểm du lịch trọng điểm của Việt Nam.
- Giới hạn: Hệ thống tập trung tối ưu hóa quy trình giữ chỗ, kiểm tra trạng thái phòng theo thời gian thực và quản lý tương tác; quy trình thanh toán trực tiếp qua cổng trung gian ngân hàng (Payment Gateway) được định hướng tích hợp ở giai đoạn tiếp theo.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí so sánh |
Đặt phòng truyền thống (Phone/Inbox) |
Nền tảng OTA lớn (Agoda/Booking/Airbnb) |
Giải pháp Đồ án HomeStay Android |
| Tính sẵn sàng dữ liệu |
Thủ công, độ trễ phản hồi từ 10-60 phút |
Thời gian thực (Real-time polling) |
Đồng bộ tức thì với Firebase Realtime JSON Tree (< 200ms) |
| Chi phí vận hành/Hoa hồng |
0% nhưng rủi ro nhầm lẫn, mất đơn |
Thu phí hoa hồng cao (15% - 25% giá trị phòng) |
Mô hình Serverless Firebase tối ưu chi phí hạ tầng |
| Bảo mật & Xác thực |
Không có xác thực, dễ giả mạo |
Xác thực phức tạp qua hệ thống quốc tế |
Xác thực email qua Firebase Auth + Hash mật khẩu + Mã hóa API Key |
| Công cụ hỗ trợ du lịch |
Phân mảnh, người dùng tự tra cứu ngoài |
Chỉ tập trung vào phòng |
Tích hợp sẵn Google Maps chỉ đường và Dự báo thời tiết tại điểm đến |
Dựa trên khảo sát thực tế, ma trận ưu tiên yêu cầu người dùng theo phương pháp MoSCoW được xác lập:
| Mức độ ưu tiên |
Yêu cầu chức năng / Phi chức năng |
| Must-have (Bắt buộc) |
Đăng ký/đăng nhập xác thực email, quản lý danh sách phòng (CRUD), cập nhật trạng thái phòng ("Còn Trống"/"Đã Đặt"), thông báo FCM, mã hóa dữ liệu nhạy cảm. |
| Should-have (Cần có) |
Tích hợp Google Maps định vị, theo dõi thời tiết, phân hệ Admin khóa/mở tài khoản dựa trên Report đánh giá xấu từ Host. |
| Could-have (Có thể thêm) |
Lọc phòng nâng cao theo tiện ích (convenient), bộ sưu tập ảnh phòng đa góc độ qua Firebase Storage. |
| Won't-have (Chưa triển khai) |
Thanh toán thẻ quốc tế trực tiếp, tính năng gọi điện thoại thoại qua giao thức VoIP nội bộ. |
Thiết kế hệ thống
Kiến trúc phần mềm tuân thủ nghiêm ngặt mô hình MVVM kết hợp nguyên lý Reactive Programming và Dependency Injection:
+---------------------------------------------------------------------------------+
| KIẾN TRÚC TỔNG THỂ CLIENT - BACKEND |
+---------------------------------------------------------------------------------+
[ Android UI Layer ] Activity / Fragment (Observer)
| ^
| Events | LiveData / StateFlow
v |
[ ViewModel Layer ] HomestayViewModel / AdminViewModel
| ^
| Call methods | Data streams (RxKotlin / Coroutines)
v |
[ Repository / Data ] Dagger 2 Injected Services (Retrofit, Firebase Clients, Crypto)
|
+-------------> Firebase Realtime DB (JSON Tree NoSQL)
+-------------> Firebase Auth (Email Verification)
+-------------> Firebase Storage (Cloud Images)
+-------------> Firebase Cloud Messaging (FCM Push Service)
+-------------> OpenWeatherMap API (Secured via AES Decryption)
+-------------> Google Maps Platform API
Công nghệ và phiên bản sử dụng
- Ngôn ngữ: Kotlin 1.6+ (tận dụng Extension Functions, Coroutines, Null-safety, Type inference).
- IDE: Android Studio (Bumblebee/Chipmunk).
- Dependency Injection: Dagger 2 (sử dụng
@Module, @Provides, @Inject, @Component để sinh mã tại thời điểm biên dịch - Pre-compiler, tối ưu hiệu năng bộ nhớ RAM).
- Phản ứng bất đồng bộ: RxJava / RxKotlin / RxAndroid (kết hợp
Observable, Observer, Schedulers.io() và AndroidSchedulers.mainThread()).
- Backend & Cloud: Firebase SDK (Realtime Database NoSQL, Authentication, Cloud Storage, FCM).
- Bảo mật: AES Symmetric Algorithm (Khóa 128/256-bit), Thuật toán hàm băm MD5/SHA, Công cụ ProGuard Obfuscator.
Thiết kế cấu trúc dữ liệu NoSQL (JSON Tree)
Cơ sở dữ liệu Firebase Realtime Database được tổ chức phân cấp phi quan hệ nhằm tối ưu hóa băng thông và độ trễ đọc/ghi:
{
"Admin": {
"Account": {
"$uid": { "mail": "admin@homestay.vn", "phone": "0987654321", "uid": "ADM001" }
},
"IntroductorySentence": { "admin": "SECRET_KEY_PHRASE" }
},
"Client": {
"Account": {
"$uid": { "mail": "tourist@gmail.com", "permission": "CLIENT", "phone": "0912345678", "token": "FCM_TOKEN_xyz", "uid": "$uid", "userName": "Nguyen Van A" }
},
"Comment": {
"$commentId": { "comment": "Phòng sạch đẹp, view ngắm biển tuyệt vời", "idRoom": "ROOM_101", "nameClient": "Ẩn danh" }
},
"Report": {
"$reportId": { "contentReport": "Khách đặt không đến, không thể liên lạc", "idClient": "USER_789", "idHost": "HOST_123" }
},
"TravelList": {
"$travelId": { "address": "Sapa, Lào Cai", "detail": "Khu du lịch Fansipan Legend", "id": "TL_01", "img": "https://firebasestorage.../sapa.jpg" }
}
},
"Host": {
"ListProvinces": { "01": { "id": "01", "name": "Hà Nội" } },
"DetailProvince": { "0101": { "idProvince": "01", "name": "Quận Ba Đình" } },
"ListRoom": {
"$roomId": {
"address": "Phường Cẩm Phô, TP Hội An",
"convenient": "Wifi, Bể bơi, BBQ, Điều hòa",
"id": "$roomId",
"imgaRoom1": "https://firebasestorage.../room1.jpg",
"imgaRoom2": "https://firebasestorage.../room2.jpg",
"introduce": "Homestay kiến trúc cổ kính sát phố cổ",
"nameRoom": "Hội An Riverside Heritage",
"numberSleepRoom": 2,
"price": 650000,
"s_room": 45,
"status": "Còn Trống",
"typeRoom": "Biệt Thự",
"uid": "HOST_123"
}
}
}
}
Implementation và kết quả
Development process
Quá trình phát triển áp dụng mô hình lặp linh hoạt (Agile Iterations), chia nhỏ dự án thành 4 sprint chính:
- Sprint 1 (Tuần 1–6): Thiết kế UI/UX XML, thiết lập cấu trúc mã nguồn MVVM, tích hợp Dagger 2 và Firebase Authentication kèm cơ chế Verify Email.
- Sprint 2 (Tuần 7–14): Xây dựng luồng dữ liệu Host (đăng tin, CRUD thông tin phòng, upload Firebase Storage) và phân hệ Client (truy vấn danh mục theo tỉnh thành, tìm kiếm phòng).
- Sprint 3 (Tuần 15–20): Triển khai luồng nghiệp vụ đặt phòng/hủy phòng thời gian thực, tích hợp FCM đẩy thông báo cho Host/Client, tích hợp Google Maps API và mã hóa API Key thời tiết.
- Sprint 4 (Tuần 21–24): Xây dựng phân hệ Admin quản lý vi phạm/report, tích hợp ProGuard bảo vệ bytecode và tiến hành kiểm thử toàn diện.
Minh họa xử lý Logic ViewModel & LiveData (Kotlin)
Đoạn mã quản lý đặt phòng và đồng bộ trạng thái thời gian thực được tối ưu hóa theo mô hình Observer:
class RoomDetailViewModel @Inject constructor(
private val firebaseDatabase: FirebaseDatabase
) : ViewModel() {
private val _bookingStatus = MutableLiveData<Resource<String>>()
val bookingStatus: LiveData<Resource<String>> = _bookingStatus
fun bookHomestay(roomId: String, clientUid: String) {
_bookingStatus.value = Resource.Loading()
val roomRef = firebaseDatabase.getReference("Host").child("ListRoom").child(roomId)
val updatePayload = mapOf<String, Any>(
"status" to "Đã Đặt",
"bookedBy" to clientUid,
"lastUpdated" to ServerValue.TIMESTAMP
)
roomRef.updateChildren(updatePayload)
.addOnSuccessListener {
_bookingStatus.postValue(Resource.Success("Đặt phòng thành công!"))
}
.addOnFailureListener { exception ->
_bookingStatus.postValue(Resource.Error("Lỗi kết nối: ${exception.localizedMessage}"))
}
}
}
Minh họa triển khai giải pháp Bảo mật: AES & Hash Password
object SecurityUtils {
// Băm mật khẩu người dùng 1 chiều qua thuật toán MD5
fun hashPassword(password: String): String {
val md = MessageDigest.getInstance("MD5")
val digested = md.digest(password.toByteArray(Charsets.UTF_8))
return digested.joinToString("") { "%02x".format(it) }
}
// Giải mã khóa API Weather bằng thuật toán đối xứng AES/CBC/PKCS5Padding
fun decryptApiKey(encryptedKey: String, secretPassphrase: String): String {
val keyBytes = secretPassphrase.toByteArray(Charsets.UTF_8).copyOf(16) // 128-bit key
val secretKeySpec = SecretKeySpec(keyBytes, "AES")
val cipher = Cipher.getInstance("AES/ECB/PKCS5Padding")
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec)
val decodedBytes = Base64.decode(encryptedKey, Base64.DEFAULT)
val decryptedVal = cipher.doFinal(decodedBytes)
return String(decryptedVal, Charsets.UTF_8)
}
}
Cơ chế bảo vệ mã nguồn với ProGuard
Trong tệp proguard-rules.pro, các quy tắc rút gọn mã và làm mờ tên lớp (Obfuscation) được cấu hình nhằm ngăn chặn dịch ngược mã nguồn bằng các công cụ như jadx hoặc apktool:
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
# Giữ nguyên cấu trúc dữ liệu Model của Firebase Realtime Database
-keepclassmembers class * {
@com.google.firebase.database.PropertyName <fields>;
}
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.example.homestay.model.** { *; }
Testing và validation
Hệ thống được trải qua quá trình kiểm thử nghiêm ngặt bao gồm Unit Test cho các tầng xử lý nghiệp vụ, UI Automation Test với Espresso và kiểm thử tải đồng thời với Firebase Profiler.
| Kịch bản kiểm thử |
Phương pháp |
Kết quả đạt được |
Trạng thái |
| Độ trễ cập nhật trạng thái phòng |
Benchmark 100 concurrent update requests |
Trung bình 142ms trên đường truyền 4G LTE |
Đạt tiêu chuẩn |
| Tỷ lệ nhận Push Notification FCM |
Thử nghiệm 500 thông báo đa thiết bị |
99.2% thiết bị nhận thông báo trong < 1.5s |
Đạt tiêu chuẩn |
| Tính toàn vẹn mã hóa AES API Key |
Reverse engineering APK bằng dex2jar |
Toàn bộ Plaintext Key được bảo vệ, giải mã an toàn tại Runtime |
Đạt chuẩn an toàn |
| Memory Leak & Crash rate |
Android Profiler stress testing (24h) |
Crash-free rate đạt 99.6%, không xuất hiện rò rỉ bộ nhớ Activity |
Tối ưu |
| Dung lượng APK sau đóng gói |
Đo lường trước và sau khi áp dụng ProGuard |
Giảm dung lượng từ 28.4 MB xuống 14.6 MB (~48.6%) |
Đạt hiệu quả cao |
Đổi mới và đóng góp
- Kiến trúc phân quyền kép (Dual-App Ecosystem) tách biệt: Thay vì gộp chung logic cồng kềnh vào một ứng dụng duy nhất, giải pháp xây dựng 2 ứng dụng độc lập (
HomeStay cho Tourist/Host và AdminHomeStay cho Quản trị viên). Điều này tối ưu hóa kích thước cài đặt (APK Footprint) và cách ly hoàn toàn các quyền nhạy cảm của Admin khỏi mã nguồn phân phối cho người dùng cuối.
- Cơ chế kiểm duyệt cộng đồng và xử lý vi phạm: Khác biệt so với các ứng dụng du lịch truyền thống, hệ thống tích hợp chu trình đóng giữa Host Report và Admin Moderator Action. Khi khách hàng vi phạm (bỏ cọc, vi phạm nội quy homestay), chủ nhà phát tín hiệu
Report, Admin có căn cứ tra cứu lịch sử và thực hiện Block Account tức thì, làm trong sạch môi trường kinh doanh.
- Mô hình bảo vệ dữ liệu nhiều lớp (Defense-in-Depth):
- Lớp 1: Xác thực email hợp lệ (
Firebase Auth) ngăn chặn tài khoản ảo.
- Lớp 2: Băm mật khẩu ngăn ngừa lộ thông tin ngay cả khi cơ sở dữ liệu bị chiếm quyền truy cập.
- Lớp 3: Mã hóa khóa AES cho các API của bên thứ ba (Third-party Services), triệt tiêu nguy cơ bị lạm dụng hạn ngạch và phát sinh chi phí ngoài tầm kiểm soát.
- Lớp 4: Làm mờ mã nguồn bằng ProGuard chống decompile APK.
Ứng dụng thực tế và triển khai
Kịch bản sử dụng thực tế (Real-world Scenarios)
- Kịch bản Khách du lịch: Bạn An muốn đi du lịch Sapa. An mở app
HomeStay, duyệt danh mục tỉnh Lào Cai, chọn khu du lịch Fansipan. Ứng dụng hiển thị danh sách các Homestay gần đó, tình trạng phòng "Còn Trống", kèm hình ảnh thật và dự báo thời tiết Sapa 3 ngày tới (giúp An chuẩn bị trang phục phù hợp). An click "Đặt phòng", dữ liệu đồng bộ tức thì, bản đồ số hiển thị ngay lộ trình di chuyển tối ưu từ vị trí hiện tại đến homestay.
- Kịch bản Chủ Homestay: Chị Hoa (chủ homestay tại Đà Nẵng) nhận được thông báo đẩy FCM trên điện thoại khi có khách vừa giữ chỗ. Chị Hoa mở app quản lý danh sách phòng, liên hệ xác nhận thông tin chỉ với một chạm.
Yêu cầu triển khai và khả năng mở rộng (Deployment & Scalability)
- Yêu cầu môi trường: Điện thoại thông minh chạy Android 7.0 trở lên, kết nối mạng Internet (3G/4G/5G hoặc Wi-Fi), dung lượng bộ nhớ trống tối thiểu 50 MB.
- Khả năng mở rộng: Nhờ hạ tầng Google Firebase Cloud, hệ thống tự động co giãn (Auto-scaling) đáp ứng hàng trăm nghìn người dùng truy cập đồng thời mà không đòi hỏi chi phí đầu tư máy chủ vật lý ban đầu. Chi phí vận hành giai đoạn khởi điểm là 0 VNĐ nhờ gói Spark miễn phí từ Firebase.
Hạn chế và hướng phát triển
Hạn chế hiện tại
- Hệ thống cơ sở dữ liệu Firebase Realtime NoSQL tuy cho tốc độ đồng bộ nhanh nhưng khả năng truy vấn phức tạp (Full-text search, lọc đa điều kiện nhiều cấp) còn hạn chế so với cơ sở dữ liệu quan hệ SQL hoặc Elasticsearch.
- Chưa tích hợp cổng thanh toán trực tuyến trong nước (VNPay, MoMo, ZaloPay) để tự động hóa hoàn toàn quy trình đặt cọc.
Hướng phát triển tương lai
- Chuyển đổi nâng cấp sang Cloud Firestore để tổ chức dữ liệu theo mô hình Collection/Document với khả năng truy vấn đa chỉ mục (Composite Indexes) mạnh mẽ hơn.
- Ứng dụng mô hình Trí tuệ Nhân tạo (Machine Learning với TensorFlow Lite) để gợi ý homestay cá nhân hóa dựa trên lịch sử tìm kiếm và sở thích của khách du lịch.
- Tích hợp cổng thanh toán trực tuyến qua chuẩn bảo mật PCI-DSS và mở rộng phiên bản nền tảng đa hệ điều hành (Flutter/React Native hoặc Kotlin Multiplatform cho iOS).
Đối tượng hưởng lợi
- Sinh viên & Học viên CNTT: Nguồn tài liệu tham khảo hoàn chỉnh về quy trình xây dựng đồ án tốt nghiệp chuẩn mực, từ phân tích thiết kế hệ thống, mô hình hóa UML đến triển khai mã nguồn Android hiện đại.
- Lập trình viên di động (Android Developers): Minh chứng thực tế về cách kết hợp kiến trúc MVVM, Dagger 2, RxKotlin, Firebase BaaS và các kỹ thuật bảo mật dữ liệu trên môi trường di động thực tế.
- Chủ cơ sở lưu trú và Khách du lịch: Giải pháp công nghệ tinh gọn giúp tiết kiệm 70% thời gian tìm kiếm, kiểm tra và xác nhận phòng nghỉ, nâng cao tỷ lệ lấp đầy phòng trống.
- Nhà nghiên cứu An toàn Thông tin Ứng dụng: Điển hình ứng dụng các chuẩn mã hóa và bảo vệ ứng dụng (Data Encryption, Reverse Engineering Protection) trong phát triển phần mềm di động thương mại.
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật tối thiểu để cài đặt và vận hành hệ thống là gì?
Thiết bị di động của người dùng cần chạy hệ điều hành Android từ phiên bản 7.0 (API Level 24) trở lên, RAM tối thiểu 2 GB và có kết nối Internet. Về phía nhà phát triển, môi trường yêu cầu Android Studio Arctic Fox trở lên, JDK 11 và tài khoản Google Firebase Console có liên kết tệp cấu hình google-services.json.
2. Giới hạn chịu tải của hệ thống Realtime Database và cách mở rộng ra sao?
Ở gói Spark miễn phí, Firebase Realtime Database hỗ trợ tối đa 100 kết nối đồng thời (100 Simultaneous Connections) và 10 GB dung lượng truyền tải/tháng. Khi lượng người dùng tăng trưởng thương mại, hệ thống chỉ cần nâng cấp lên gói Blaze (Pay-as-you-go) mà không cần cấu trúc lại mã nguồn, cho phép mở rộng tới hơn 200.000 kết nối đồng thời trên mỗi Database Instance.
3. Làm thế nào để tích hợp thêm các dịch vụ bản đồ khác ngoài Google Maps?
Nhờ tuân thủ nguyên lý thiết kế Dependency Inversion trong kiến trúc MVVM, lớp UI không phụ thuộc cứng vào Google Maps SDK. Lập trình viên có thể dễ dàng thay thế hoặc bổ sung các dịch vụ bản đồ khác như OpenStreetMap hoặc Mapbox bằng cách tạo mới một MapProvider triển khai chung Interface bản đồ mà không làm ảnh hưởng đến luồng xử lý nghiệp vụ đặt phòng.
4. Chi phí duy trì và bảo trì hệ thống ước tính như thế nào?
Trong giai đoạn thử nghiệm (Beta testing dưới 5.000 người dùng tích cực hàng tháng), chi phí máy chủ backend hoàn toàn bằng 0 VNĐ nhờ chính sách hỗ trợ của Firebase. Khi mở rộng quy mô thương mại, chi phí duy trì Firebase ước tính chỉ từ 15 – 50 USD/tháng cho lưu lượng dữ liệu và tin nhắn FCM, tối ưu hơn 80% so với việc tự thuê và vận hành cụm máy chủ VPS riêng.
5. Tại sao cần phải mã hóa API Key của dịch vụ Thời tiết (Weather API)?
Các nhà cung cấp dịch vụ thời tiết giới hạn số lượng truy vấn miễn phí (Rate Limit) theo khóa API của tài khoản. Nếu để lộ Plaintext Key trong mã nguồn, kẻ xấu có thể trích xuất (Decompile APK) và sử dụng trái phép, dẫn đến việc ứng dụng bị khóa dịch vụ do vượt hạn mức hoặc bị tính phí phát sinh ngoài ý muốn. Thuật toán AES giúp bảo vệ khóa an toàn trước các cuộc tấn công tĩnh.
Kết luận
Đồ án tốt nghiệp "Phát triển ứng dụng đặt phòng dịch vụ du lịch HomeStay trên nền tảng Android" đã giải quyết thành công bài toán chuyển đổi số cho mô hình lưu trú du lịch homestay. Thông qua việc làm chủ công nghệ lập trình hiện đại với ngôn ngữ Kotlin, kiến trúc phần mềm chuẩn MVVM, kết hợp hệ sinh thái đám mây Firebase và các giải pháp mã hóa an toàn thông tin chuyên sâu của Học viện Kỹ thuật Mật mã, sản phẩm đáp ứng trọn vẹn các yêu cầu khắt khe về tính năng, hiệu năng và bảo mật. Đề tài mở ra tiềm năng thương mại hóa cao, đồng thời đóng vai trò là tài liệu tham khảo kỹ thuật giá trị cho cộng đồng nghiên cứu và phát triển phần mềm di động tại Việt Nam.