«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Создание менеджера паролей на Go

Создание менеджера паролей на Go

Опубликовано 8 ноября 2024 г.
Просматривать:905

Как разработчика программного обеспечения, меня всегда восхищало сочетание безопасности и удобства использования. Недавно я решил приступить к захватывающему проекту: созданию менеджера паролей командной строки с использованием Go. Я хочу поделиться с вами началом этого пути, начиная с самого первого коммита.

Бытие

27 ноября 2023 года я сделал первоначальный коммит для своего проекта, который назвал «dost» (друг на хинди, что отражает его роль помощника в управлении паролями). Этот первый шаг, хоть и небольшой, но закладывает основу для того, что, я надеюсь, станет надежным и удобным для пользователя инструментом.

Вдохновение и видение

Building a Password Manager in Go

Приступая к этому проекту, я черпал вдохновение из популярного менеджера паролей командной строки. Мое внимание привлекла простота и эффективность pass, и я решил использовать его API в качестве образца для создания собственного менеджера паролей на Go.

Погружение в исходный код pass было поучительным опытом. Я был заинтригован, обнаружив, что вся функциональность этого широко используемого инструмента заключена в одном комплексном сценарии Bash. Я восхищаюсь этой элегантной простотой и надеюсь подражать ей в своем проекте, хотя и с использованием сильных сторон Go.

Изучая pass, я получил ценную информацию об основных функциях менеджера паролей командной строки и о том, как он должен обеспечивать взаимодействие с пользователем. Продолжая разрабатывать «dost», я буду помнить об этих уроках, стремясь создать инструмент, который сочетает в себе простоту прохода с производительностью и преимуществами кроссплатформенной совместимости Go.

Это исследование не только предоставило план реализации функций, но и укрепило мою веру в силу хорошо продуманных и целенаправленных инструментов. Мне не терпится увидеть, как это вдохновение повлияет на эволюцию «доста» на следующих этапах разработки.

Первые возможности

Первоначальный коммит был сосредоточен на двух основных функциях:

  1. Генерация паролей: я реализовал базовый генератор паролей, который позволяет пользователям указывать желаемую длину пароля. Целью этой функции является создание надежных случайных паролей, адаптированных к различным требованиям безопасности.

  2. Интеграция с буфером обмена: Чтобы улучшить взаимодействие с пользователем, я позаботился о том, чтобы сгенерированный пароль автоматически копировался в буфер обмена. Эта небольшая, но важная функция экономит время и снижает риск ошибок транскрипции.

Техническая информация

Давайте углубимся в некоторые технические аспекты этой первой итерации:

  • Версия Go: проект создан с использованием Go 1.21.0, используя простоту и эффективность языка.
  • Внешние зависимости: я использую пакет github.com/atotto/clipboard для беспрепятственной обработки операций с буфером обмена в разных операционных системах.
  • Генерация случайных чисел: при генерации паролей используется пакет crypto/rand Go для безопасной генерации случайных чисел, что имеет решающее значение для создания непредсказуемых и надежных паролей.
  • Набор символов: генератор паролей включает в себя прописные и строчные буквы, цифры и различные специальные символы для обеспечения сложности.

Фрагменты кода

Давайте рассмотрим некоторые ключевые части реализации:

  1. Функция генерации пароля:
func generatePassword(length int) (string, error) {
    const (
        uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"
        digits           = "0123456789"
        specialChars     = "!@#$%^&*()-_= []{}|;:'\",./?"
    )

    allChars := uppercaseLetters   lowercaseLetters   digits   specialChars

    var password string
    for i := 0; i 


Эта функция создает пароль путем случайного выбора символов из предопределенного набора, обеспечивая сочетание прописных и строчных букв, цифр и специальных символов.

  1. Интеграция с буфером обмена:
func writeToClipboard(text string) error {
    return clipboard.WriteAll(text)
}

Эта простая функция использует пакет буфера обмена для записи сгенерированного пароля в системный буфер обмена.

  1. Основная функция:
func main() {
    passwordLength := flag.Int("length", 12, "length of your password")
    flag.Parse()

    password, err1 := generatePassword(*passwordLength)
    if err1 != nil {
        fmt.Println("Error generating password:", err1)
        return
    }

    fmt.Println("Generated Password:", password)

    err2 := writeToClipboard(password)
    if err2 != nil {
        fmt.Println("Error writing to clipboard:", err2)
        os.Exit(1)
    }

    fmt.Println("Copied to clipboard! ✅\n")
}

Функция main связывает все воедино. Он использует пакет флагов Go, позволяющий пользователям указывать длину пароля, генерирует пароль и копирует его в буфер обмена.

Интерфейс командной строки

Как вы можете видеть в основной функции, я реализовал простой интерфейс командной строки, используя пакет флагов Go. Пользователи могут указать желаемую длину пароля с помощью флага -length. Если не указано иное, по умолчанию используется 12 символов.

Заглядывая в будущее

Этот первый коммит — только начало. Продолжая разрабатывать этот менеджер паролей, я планирую добавить такие функции, как:

  • Безопасное хранение паролей
  • Шифрование хранимых данных
  • Функции поиска и извлечения данных
  • Анализ надежности пароля

Я воодушевлен предстоящим путешествием и проблемами, которые оно принесет. Создание менеджера паролей — это не только программирование; речь идет о понимании принципов безопасности, потребностей пользователей и создании инструмента, которому люди смогут доверять свою конфиденциальную информацию.

Следите за обновлениями по мере развития проекта. Я буду делиться своим прогрессом, проблемами и знаниями, полученными на этом пути. Если вы хотите следить за нами или внести свой вклад, посетите проект на GitHub.

Building a Password Manager in Go Свемараджу / дост

менеджер паролей командной строки dost, написанный на Go

дост

dost — это менеджер паролей CLI, написанный на Go.

Вдохновлено (Pass)[https://www.passwordstore.org/]

Функции

  • Создание случайных паролей настраиваемой длины
  • Автоматическое копирование сгенерированных паролей в буфер обмена
  • Пропустить использование символов

Использование

> go build -o dost main.go
Войти в полноэкранный режимВыйти из полноэкранного режима

Генерация пароля:

> ./dost generate email/[email protected]
Generated Password: );XE,7-Dv?)Aa &

Генерация пароля указанной длины (по умолчанию 25):

> ./dost generate email/[email protected] 12
Generated Password: si

Скопировать сгенерированный пароль в буфер обмена, не распечатывая:

> ./dost generate -c email/[email protected] 
Copied to clipboard! ✅

Избегайте символов для создания паролей:

> ./dost generate -n email/[email protected] 
Generated Password: E2UST}^{Ac[Fb&D|cD%;Eij>H

В разработке

  • Введите новый пароль вручную
  • Показать существующий пароль
  • Показать все записи
  • Хранение пароля
  • Шифрование на основе ключа GPG

Лицензия

MIT




Просмотреть на GitHub


Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/svemaraju/building-a-password-manager-in-go-31jo?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3