Metadata-Version: 2.4
Name: vector_crypt
Version: 0.1.0
Summary: A toy cryptographic library encoding data as applied vector sets.
Author-email: Sagu4ka <sagu4ka@gmail.com>
License: MIT
Keywords: cryptography,vector,encoding,one-time-pad
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# Applied-Vector Crypto (`vector_crypt`)

A lightweight Python library demonstrating a **novel cryptographic
principle**: represent both plaintext and keys as _sets of applied vectors_
and perform encryption simply by vector addition.  The package is intended as
an educational toy, a research starting point, or a playful experiment rather
than a drop-in replacement for real-world ciphers.

## 🚀 Основная идея

Каждый байт (или символ, блок) сообщения кодируется как
**`AppliedVector`** — отрезок с фиксированным началом и направлением.  Ключ
тоже является набором таких векторов.  Шифрование сводится к поэлементному
сложению двух наборов (похожим на операцию `XOR` для чисел), а расшифровка –
к вычитанию.

*В отличие от большинства алгоритмов, здесь информация представлена геометрически,
что даёт визуализацию, естественное расширение на многомерность и простой
потоковый интерфейс.*

### Почему это уникально?

- **Геометрическое представление.**  Традиционные симметричные схемы оперируют
  на битах и байтах.  Мы работаем с векторами, что позволяет легко вводить
  масштабирование, вращения, линейные преобразования и работать в произвольных
  пространствах (включая конечные поля).

- **Простота.**  Всего пара строк кода даёт шифрование/дешифровку.  Нет S‑боксов,
  нет ключевого расписания, только алгебра над векторами.

- **Потоковая обработка.**  Код поддерживает генераторы, чтение/запись файлов
  по кускам и пакетные операции, что пригодится для больших данных.

- **Проверяемость.**  Отображение вектор‑множества на экран, графы, SVG…
  Приятно для обучения и визуальных демо.

## 🔍 Схожие идеи в криптографии

- **One‑time pad / Vernam cipher.**  Байт сообщения прибавляется к байту ключа
  по модулю 2⁸; наша операция аналогична, но мы «вырастаем» в векторное
  пространство и сохраняем абсолютную информацию в промежуточном виде (можно
  наложить дополнительные операции).

- **Кодировка векторов в стойкие каналы.**  В теории информации часто
  рассматривают передаваемые сигналы как точки в \\Rⁿ; в этом смысле наше
  шифрование — частный случай линейного кодирования.

- **Графовые шифры.**  В гомоморфных системах используются линейные операции;
  наш механизм легко расширяется до гомоморфизма над векторным пространством.

Однако: мы не претендуем на криптостойкость, а скорее демонстрируем новый
формальный подход.  Внедрить в реальную систему потребует серьёзного
криптоанализа и, вероятно, модификаций (например, работа в конечных полях,
нелинейные слои и т. д.).

## 🧩 Структура проекта

```
vector_crypt/        # репозиторий
├── vector_crypt/     # собственно пакет Python
│   ├── __init__.py
│   ├── classes.py
│   ├── endecode.py
│   ├── keygen.py
│   └── vector_codec.py
├── tests/            # простые тесты (пока минимум)
├── README.md         # вы читаете
├── LICENSE           # MIT
└── pyproject.toml    # сборка/метаданные
```

## ⚙️ Установка и использование

```bash
pip install vector_crypt
```

```python
from vector_crypt import encrypt_text, decrypt_text, key_for_data

key = key_for_data(b"secret message")
cipher = encrypt_text("hello", key)
print(decrypt_text(cipher, key))  # hello
```

Для потокового шифрования используйте `encrypt_bytes_stream` вместе с
`generate_random_key_stream`.

## 📝 Где использовать

Библиотека подходит для:

* учебных примеров и лекций по основам криптографии;
* прототипирования альтернативных представлений данных (векторов вместо
  скаляров);
* демонстраций визуализации шифрования в 2D/3D;
* утилит, где требуется совместное хранение геометрической информации и
  шифрования (например, защитить набор координат).

Не рекомендуется применять `vector_crypt` для защиты реальных данных без
дополнительного анализа.
