Skip to content

Project in Cryptography lesson - Integrating the Advanced Encryption Standard (AES) for encrypting and decrypting different data types (text, audio, and image) across a message transmission system is a very practical and relevant application.

Notifications You must be signed in to change notification settings

dangvinh29/ChatNETproject

Repository files navigation

💬 ChatNET

Ứng dụng chat peer-to-peer (P2P) qua mạng LAN với tính năng mã hóa AES Cipher, được xây dựng bằng React Native.

🏗️ Kiến trúc & Công nghệ

Stack công nghệ

  • Framework: React Native 0.81.4

  • Language: TypeScript 5.8.3

  • UI Library: React 19.1.0

  • Networking:

    • react-native-tcp-socket - TCP communication
    • @react-native-community/netinfo - Network detection
    • react-native-nitro-sound Ghi và phát lại âm thanh.
    • react-native-fs Quản lý file (lưu file audio tạm thời).
    • react-native-image-picker Chọn và chuyển đổi hình ảnh.
    • @react-native-community/netinfo Lấy địa chỉ IP cục bộ.
  • Build Tools:

    • Metro Bundler
    • Gradle (Android)
    • Xcode (iOS)

Mã hóa

Ứng dụng sử dụng AES Cipher - một phương pháp mã hóa đối xứng:

  • Hoạt động bằng cách chia dữ liệu thành các khối có kích thước cố định là 256 bit, sau đó áp dụng một chuỗi các phép biến đổi được lặp lại qua nhiều vòng.
  • Cùng một khóa bí mật (Secret Key) được sử dụng cho cả quá trình mã hóa (Encryption) và giải mã (Decryption).

📋 Yêu cầu hệ thống

Môi trường phát triển

  • Node.js: >= 20.x (như trong package.json)
  • npm hoặc yarn: Để quản lý dependencies
  • Git: Để clone và version control

Android Development

  • Android Studio: Godzilla (2024) hoặc mới hơn
  • JDK: 17 hoặc 21
  • Android SDK:
    • Build Tools version 35.0.0
    • Platform: Android 15 (API 35)
    • NDK (nếu cần native modules)
  • Gradle: 8.10.2
  • Android Gradle Plugin: 8.7.3

iOS Development (chỉ trên macOS)

  • macOS: Ventura (13.0) hoặc mới hơn
  • Xcode: 14.0+
  • CocoaPods: Để quản lý iOS dependencies
  • iOS Deployment Target: 13.4+

Thiết bị test

  • Android: API 21+ (Android 5.0+)
  • iOS: iOS 13.4+
  • Network: Cả 2 thiết bị phải cùng mạng WiFi/LAN

🚀 Cài đặt

1. Clone repository

git clone https://github.com/dangvinh29/ChatNETproject.git
cd ChatNET

2. Cài đặt dependencies

# Sử dụng npm
npm install

# Hoặc yarn
yarn install

3. Cài đặt iOS dependencies (chỉ trên macOS)

cd ios
pod install
cd ..

4. Kiểm tra cấu hình Android

Đảm bảo file android/local.properties có đường dẫn SDK. Nếu chưa có file android/local.properties thì có thể tạo thêm:

sdk.dir=C\:\\Users\\YourUsername\\AppData\\Local\\Android\\sdk

5. Chú ý tải các Networking trong phần Stack Công Nghệ nếu /node_modules chưa có, chẳng hạn:

npm install react-native-fs 

📱 Chạy ứng dụng

Android

Bước 1: Khởi động Metro Bundler

Mở terminal/command prompt và chạy:

npm start
# Hoặc
npx react-native start

Bước 2: Chạy trên thiết bị/emulator

Mở terminal mới (giữ Metro chạy) và thực thi:

# Chạy trên emulator hoặc thiết bị đã kết nối
npm run android

# Hoặc dùng React Native CLI trực tiếp
npx react-native run-android

Lưu ý:

  • Đảm bảo USB Debugging đã bật trên thiết bị Android
  • Kiểm tra thiết bị đã kết nối: adb devices
  • Nếu có nhiều thiết bị, chỉ định device: adb -s <device_id> install app.apk

iOS (chỉ macOS)

Bước 1: Khởi động Metro Bundler

npm start

Bước 2: Chạy trên simulator/device

# Chạy trên iOS simulator mặc định
npm run ios

# Chạy trên iPhone 15 Pro simulator
npx react-native run-ios --simulator="iPhone 15 Pro"

# Chạy trên thiết bị thật (cần Apple Developer Account)
npx react-native run-ios --device

📦 Build APK (Android)

Debug APK

# Build debug APK
npm run build:apk

# Hoặc thủ công
cd android
./gradlew assembleDebug
cd ..

# File APK: android/app/build/outputs/apk/debug/app-debug.apk

Release APK (Signed)

# Build release APK đã ký
npm run build:release

# File APK: android/app/build/outputs/apk/release/app-release.apk

Cấu hình signing (trong android/app/build.gradle):

signingConfigs {
    release {
        storeFile file('my-release-key.keystore')
        storePassword 'your-store-password'
        keyAlias 'my-key-alias'
        keyPassword 'your-key-password'
    }
}

Cài đặt APK lên thiết bị

# Cài debug APK
npm run install:apk

# Cài release APK
npm run install:release

# Hoặc thủ công với adb
adb install -r path/to/app.apk

📖 Cách sử dụng

Bước 1: Mở Settings

  1. Mở ứng dụng trên cả 2 thiết bị
  2. Nhấn vào icon ⚙️ (Settings) góc phải trên cùng

Bước 2: Cấu hình

Thiết bị A:

  • Xem "📱 Địa chỉ IP của bạn" (ví dụ: 192.168.1.100)
  • Nhập IP của thiết bị B vào "🌐 IP người nhận"
  • Cấu hình mã hóa (nếu cần):
    • Bật/tắt "🔐 Chế độ mã hóa"
    • Nhập "🔑 Key mã hóa" (1-25, ví dụ: khongc0matkhau)

Thiết bị B:

  • Xem IP của mình
  • Nhập IP của thiết bị A vào "IP người nhận"
  • Quan trọng: Sử dụng cùng key mã hóa với thiết bị A

Bước 3: Chat

  • Nhập tin nhắn vào ô input phía dưới
  • Nhấn nút gửi (icon ✉️)
  • Tin nhắn sẽ được mã hóa (nếu bật) và gửi qua TCP socket
  • Đối với ảnh, nhấn vào icon máy ảnh bên trái khung nhập chat để chọn ảnh từ thư viện trong máy.
  • Đối với audio, nhấn vào icon micro bên cạnh máy ảnh để ghi âm cuộc thoại.

⭐ Nếu thấy hữu ích, hãy star repository này!

About

Project in Cryptography lesson - Integrating the Advanced Encryption Standard (AES) for encrypting and decrypting different data types (text, audio, and image) across a message transmission system is a very practical and relevant application.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published