Releases: VLOD-ZDOV/SCmess
Подкопотные улучшение
Потоковое шифрование файлов — encrypt_file_gcm и decrypt_file_gcm теперь читают файл блоками по 64 КБ в цикле. Шифрование вынесено в threading.Thread прямо из FileScreen, интерфейс не зависает. На экране показывается прогресс в процентах через Clock.schedule_once (единственный безопасный способ трогать UI из потока в Kivy). Пока идёт операция — кнопки не реагируют повторно (_busy = True).
Фикс RSA-ключей разного размера — старый код хардкодил f.read(512), что ломало 2048-бит ключи (их блок 256 байт). Новый формат файла: первые 2 байта хранят длину RSA-блока (rsa_block_len.to_bytes(2, 'big')), после него RSA-блок нужной длины. Тег GCM перенесён в конец файла (так работает потоковый GCM — тег доступен только после finalize()).
Путь сохранения файлов — метод _output_path() сначала пробует сохранить рядом с оригиналом (проверяет запись тестовым файлом). Если директория недоступна (например, кэш Document UI) — сохраняет в Downloads/. Пользователь видит полный путь в уведомлении об успехе.
Document UI — убран медленный побайтовый JNI-цикл через InputStream. Остался только быстрый путь через ParcelFileDescriptor.getFd() + os.read() — Python читает напрямую через Linux fd без JNI на каждый байт. Копирование вынесено в поток.
FileScreen — два спиннера как в TextScreen: верхний для шифрования (публичные ключи), нижний для расшифровки (приватные, первый по умолчанию).
Настройки — кнопки «Логи приложения» (не требует dev mode) и «Версия 1.7 — Что нового?» с подробным changelog.
Допил функционала
Legacy шифрование — новая кнопка в главном меню, отдельный экран LegacyScreen с тем же интерфейсом что и обычное шифрование. Использует твою исходную логику: прямой RSA-OAEP без AES, результат — base64-строка. Важно: работает только с короткими текстами (до ~470 байт для 4096-бит ключа)
Импорт приватного ключа — оба диалога (из файла и текстом) теперь автоматически определяют тип по содержимому PEM. Проверяется наличие слова PRIVATE / PUBLIC в заголовке, если нет — пробует загрузить через cryptography. Для одного пользователя можно импортировать оба ключа отдельными операциями — они пишутся в разные поля (public_key_path / private_key_path), не перезатирают друг друга.
Fingerprint — в карточке пользователя теперь показывается A3:F7:C2:D1:E9:B0:4A:1C (SHA-256 от DER публичного ключа, первые 16 символов). Для приватного ключа fingerprint считается через его публичную часть — поэтому совпадает с публичным ключом той же пары, что удобно для проверки.
Спиннер расшифровки в TextScreen — теперь два спиннера: верхний «для шифрования» (публичные ключи), нижний «для расшифровки» (приватные). Нижний по умолчанию автоматически выбирает первого пользователя с приватным ключом при входе на экран.
Подтверждение удаления — попап «Удалить / Отмена» перед удалением пользователя.
bugfix Scmess_apk
Крипто: вместо имён — хеш публичного ключа (fingerprint). Имена в JSON исчезнут, при расшифровке ищем по отпечатку своего ключа.
UI: кнопки «Вставить», «Очистить», «Скопировать» + авто-копирование в группе.RВот что сделано:
Анонимность получателей в групповом шифровании
Вместо имён в JSON теперь хранятся SHA-256 fingerprint'ы публичных ключей (первые 32 символа hex).
Имена нигде не фигурируют. При расшифровке приложение берёт свои локальные публичные ключи, считает их fingerprint и ищет совпадение в словаре
Новые кнопки:
Шифрование текста: строка «Зашифровать / Расшифровать» + отдельная строка «Вставить / Очистить»
Групповой чат: переключатель авто-копирования (как в текстовом экране) + строка «Вставить / Очистить»
SCmess_apk
3.4.1 Update main.py
6.1
6.0
5.5
Небольшое обновление с фиксом мини багов
[FIX] mini-bug
SCmess_Cython.bin - Linux версия скомпилированная gcc + Cython
SCmess_Nuitka.bin - Linux версия скомпилированная Nuitka
SCmess.exe - Windows версия скомпилированная pyinstaller
SCmess_Gui.bin - Linux версия Gui
SCmess_Gui.exe - Windows версия Gui
Rust(консольная и не функциональная):
Rsmess.exe
Rsmess.bin
RsmessAARCH64.bin - Версия для запуска на aarch64
RsmessAndroid.bin - Версия для запуска на android
5.4
[FIX] Расшифровка файлов не работала из за ожидания rsa2048 вместо 4096
[ADD] .exe
SCmess.exe консольная версия | SCmess_Gui.exe весия с Qt интерфейсом (предпочтительнее)
SCruss-Gui.exe Gui версия на Rust. На нее в отличие от других .exe не жалуется защитник windows. Но она нормально не реализованна
SCruss_Gui linux версия Gui на Rust. Лучше вместо нее пользоватся пайтон версией
SCmess_Gui.bin linux скомпилированная nuitka