Как разработчика программного обеспечения, меня всегда восхищало сочетание безопасности и удобства использования. Недавно я решил приступить к захватывающему проекту: созданию менеджера паролей командной строки с использованием Go. Я хочу поделиться с вами началом этого пути, начиная с самого первого коммита.
27 ноября 2023 года я сделал первоначальный коммит для своего проекта, который назвал «dost» (друг на хинди, что отражает его роль помощника в управлении паролями). Этот первый шаг, хоть и небольшой, но закладывает основу для того, что, я надеюсь, станет надежным и удобным для пользователя инструментом.
Приступая к этому проекту, я черпал вдохновение из популярного менеджера паролей командной строки. Мое внимание привлекла простота и эффективность pass, и я решил использовать его API в качестве образца для создания собственного менеджера паролей на Go.
Погружение в исходный код pass было поучительным опытом. Я был заинтригован, обнаружив, что вся функциональность этого широко используемого инструмента заключена в одном комплексном сценарии Bash. Я восхищаюсь этой элегантной простотой и надеюсь подражать ей в своем проекте, хотя и с использованием сильных сторон Go.
Изучая pass, я получил ценную информацию об основных функциях менеджера паролей командной строки и о том, как он должен обеспечивать взаимодействие с пользователем. Продолжая разрабатывать «dost», я буду помнить об этих уроках, стремясь создать инструмент, который сочетает в себе простоту прохода с производительностью и преимуществами кроссплатформенной совместимости Go.
Это исследование не только предоставило план реализации функций, но и укрепило мою веру в силу хорошо продуманных и целенаправленных инструментов. Мне не терпится увидеть, как это вдохновение повлияет на эволюцию «доста» на следующих этапах разработки.
Первоначальный коммит был сосредоточен на двух основных функциях:
Генерация паролей: я реализовал базовый генератор паролей, который позволяет пользователям указывать желаемую длину пароля. Целью этой функции является создание надежных случайных паролей, адаптированных к различным требованиям безопасности.
Интеграция с буфером обмена: Чтобы улучшить взаимодействие с пользователем, я позаботился о том, чтобы сгенерированный пароль автоматически копировался в буфер обмена. Эта небольшая, но важная функция экономит время и снижает риск ошибок транскрипции.
Давайте углубимся в некоторые технические аспекты этой первой итерации:
Давайте рассмотрим некоторые ключевые части реализации:
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Эта функция создает пароль путем случайного выбора символов из предопределенного набора, обеспечивая сочетание прописных и строчных букв, цифр и специальных символов.
- Интеграция с буфером обмена:
func writeToClipboard(text string) error { return clipboard.WriteAll(text) }Эта простая функция использует пакет буфера обмена для записи сгенерированного пароля в системный буфер обмена.
- Основная функция:
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.
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
MIT
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3