**Менеджер паролей на чистом JavaScript с шифрованием AES-256-GCM: как я сделал и почему это круче KeePass**
---------------------
Привет, подписчики!
На связи команда
© DevGeek.iT, 2026.
---------------------
Я обычно делаю так: если мне нужен инструмент, который должен быть максимально простым и безопасным, я пишу его сам.
Так родился мой менеджер паролей на чистом JavaScript.
Никаких серверов, никаких облаков — только твой браузер и localStorage.
И да, он реально работает.
---------------------
В отличие от KeePass, который требует установки, синхронизации файлов и вечного поиска плагинов, мой менеджер — это один HTML-файл.
Открыл, ввёл пароль, пользуешься. Всё шифруется на лету через Web Crypto API: AES-256-GCM, соль, PBKDF2 с 100 000 итераций.
Мастер-пароль никогда не сохраняется — даже в памяти после блокировки.
---------------------
На практике это выглядит так: ты создаёшь хранилище, придумываешь мастер-пароль.
После этого все твои записи (сервис, логин, пароль, заметки) лежат в зашифрованном JSON.
В localStorage хранятся только соль и зашифрованный слепок.
При разблокировке ключ вычисляется заново и расшифровывает данные в оперативной памяти.
Никаких открытых паролей на диске.
---------------------
Вот пример кода, который отвечает за деривацию ключа.
Это сердце системы:
```javascript
async function deriveKey(password, salt) {
const baseKey = await crypto.subtle.importKey(
'raw',
new TextEncoder().encode(password),
'PBKDF2',
false,
['deriveKey']
);
return crypto.subtle.deriveKey(
{ name: 'PBKDF2', salt, iterations: 100000, hash: 'SHA-256' },
baseKey,
{ name: 'AES-GCM', length: 256 },
false,
['encrypt', 'decrypt']
);
}
```
Этот код выполняется каждый раз при вводе пароля.
Если пароль неверный — расшифровка падает с ошибкой.
Всё честно, никаких обходных путей.
---------------------
**Фишка от DevGeek:** я добавил автоматический экспорт зашифрованного бэкапа в JSON.
Ты просто нажимаешь «Экспорт» — и скачиваешь файл, который можно импортировать на другом устройстве.
При этом сам мастер-пароль не передаётся — ты вводишь его заново при импорте.
Это удобнее, чем таскать с собой файл базы KeePass и искать клиент под каждую ОС.
---------------------
**На что обратить внимание:** если ты потеряешь мастер-пароль — данные не восстановить.
Это не баг, это фича архитектуры.
Никакого «сброса пароля» по почте.
Поэтому я всегда советую делать бэкап и хранить пароль в надёжном месте.
И ещё: localStorage привязан к домену/файлу.
Если ты запускаешь локально, данные не смешиваются с другими сайтами.
Но при очистке браузера они пропадают — если нет бэкапа.
---------------------
Главное преимущество перед KeePass — мобильность.
Мой менеджер работает в любом браузере, на любом устройстве, без установки.
Ты можешь носить его на флешке и открывать где угодно.
А KeePass привязан к десктопу или требует сторонних приложений на мобилках.
Да, у KeePass есть плагины и синхронизация через облако, но зачем усложнять, если можно просто загрузить один HTML-файл и работать?
---------------------
Я сделал интерфейс минималистичным: карточки с сервисами, поле поиска, кнопки «Добавить», «Редактировать», «Скопировать пароль».
Пароли скрыты точками, раскрываются по клику на иконку замка.
Всё интуитивно, никакого оверхеда.
Это то, чего не хватает в KeePass — лёгкости и скорости.
---------------------
Так что если ты ищешь простой, безопасный и портативный менеджер паролей — попробуй мой вариант.
Он уже лежит у меня на GitHub, и ты можешь адаптировать его под себя.
Пробуйте переходите: https://devgeekit.github.io/Manager-Password/
В следующем разборе покажу, как добавить синхронизацию через WebDAV или облако без потери безопасности.
Оставайся на связи!
---------------------
• 💳 Понравилась статья?
• Поддержать канал можно здесь:👇
https://yoomoney.ru/fundraise/1FR6ECUSV0I.260210
И здесь:👇
https://yoomoney.ru/to/4100118121919268
---------------------
• Карта: 5599 0020 2871 9278 (Банк-YooMoney)
---------------------
• Любая поддержка помогает
• Выпускать разборы
• Регулярнее — спасибо! 🙏
---------------------
• Оставайтесь с нами, подписывайтесь на канал!
• © DevGeek.IT, 2026
• Впереди ещё много полезных разборов!
---------------------