Password Vault — это легковесное консольное приложение для безопасного хранения, генерации и управления паролями.
Все данные шифруются локально1, мастер-пароль не сохраняется.
- О проекте
- Возможности
- Технические характеристики
- Установка
- Пример использования
- Планы по развитию
- Команда
- Лицензия
- Ответы на контрольные вопросы
Password Vault родился из необходимости хранить пароли от разных сервисов в одном защищённом месте.
«Безопасность — это не функция, а образ мышления.» — миссия проекта.
Проект написан на Python 3.10+ и использует:
cryptographyдля шифрования,secretsдля генерации стойких паролей,- JSON для хранения записей.
Инлайн-код: для генерации пароля вызовите vault.generate_password(12).
- 🔒 Локальное шифрование — все данные хранятся в зашифрованном виде.
- 🔑 Генератор стойких паролей — длина от 8 до 32 символов.
- 📋 Копирование пароля в буфер обмена (через
pyperclip). - 🗂 Категории записей (соцсети, почта, банки, работа).
- 🛡 Блокировка хранилища после 3 неудачных попыток ввода мастер-пароля.
password_vault/vault/__init__.pycrypto.py— шифрование/дешифрованиеstorage.py— работа с JSON-файломcli.py— интерфейс командной строки
tests/test_crypto.py
requirements.txtREADME.mdmain.py
| Характеристика | Значение |
|---|---|
| Язык программирования | Python 3.10+ |
| Алгоритм шифрования | AES-256 (Fernet) |
| Формат хранения | JSON + шифрование |
| Минимальная длина пароля | 8 символов |
| Поддержка ОС | Windows / Linux / macOS |
-
Склонируйте репозиторий
git clone https://github.com/yourusername/password_vault.git -
Перейдите в папку проекта
cd password_vault -
Создайте виртуальное окружение
python -m venv venv -
Активируйте виртуальное окружение
- Windows:
venv\Scripts\activate - Mac/Linux:
source venv/bin/activate
- Windows:
-
Установите зависимости
pip install -r requirements.txt -
Запустите приложение
python main.py
# Пример кода: создание нового пароля
from vault.crypto import generate_password
# Генерация пароля длиной 16 символов
new_pass = generate_password(16)
print(f"Сгенерированный пароль: {new_pass}")
Ожидаемый вывод:
Сгенерированный пароль: kL9#x!mQ2$pV&zR7- Реализовать базовое шифрование (AES-256)
- Добавить двухфакторную аутентификацию (TOTP)
- Создать графический интерфейс (Tkinter / PyQt)
- Реализовать автоблокировку при бездействии
- Выпустить мобильное приложение (Kivy)
- Алексей С. — разработчик бэкенда, шифрование
- Мария К. — тестирование, документация
- Проект открыт для контрибьюторов — пишите в Issues
Проект распространяется под лицензией MIT. Подробнее — в файле LICENSE.
📖 Нажмите, чтобы развернуть ответы
-
Чем отличается вложенная цитата от обычной?
Обычная цитата начинается с>и представляет один блок. Вложенная — это цитата внутри цитаты, обозначается>>,>>>и т.д. Она создаёт иерархию (цитата в цитате). -
Как сделать сноску в Markdown и где она отображается?
В тексте ставится[^ключ], а внизу документа —[^ключ]: Текст сноски. Сноски отображаются в конце документа (или раздела) в виде нумерованного списка. -
В чём разница между
- [ ]и- [x]в списках задач?
- [ ]— невыполненная задача,- [x]— выполненная. На GitHub такие списки становятся интерактивными чекбоксами. -
Какие два способа вставки эмодзи вы знаете?
- Кодовые последовательности:
:smile:→ 😄 - Прямое копирование символа:
😄
- Кодовые последовательности:
-
Зачем нужны HTML-вставки? Приведите пример.
Чтобы добавить элементы, которых нет в Markdown: цветной текст, выпадающие списки, клавиши<kbd>.
Пример:<kbd>Ctrl</kbd> + <kbd>C</kbd> -
Почему важно использовать правильные имена для внутренних ссылок (якорей)?
Потому что ссылка вида#мой заголовокпреобразуется в#мой-заголовок(пробелы → дефисы, регистр ↓). Если назвать якорь неправильно, ссылка не сработает. -
Что произойдёт, если в таблице окажется разное количество столбцов в разных строках?
Рендер нарушится: строка с меньшим числом ячеек будет иметь «дырки», с большим — лишние ячейки могут быть проигнорированы или «съехать». Таблица станет нечитаемой.
Выше и ниже этой строки есть разделители ---.
Это — последний обязательный элемент документа.
Footnotes
-
Используется симметричное шифрование AES-256. ↩