身為軟體開發人員,我一直對安全性和可用性的交集著迷。最近,我決定開始一個令人興奮的專案:使用 Go 建立一個命令列密碼管理器。我想與您分享這段旅程的開始,從第一次提交開始。
2023 年 11 月 27 日,我對我的專案進行了初步提交,我將其命名為「dost」(印地語中的朋友,反映了它作為密碼管理的有用伴侶的角色)。這第一步雖然很小,但卻為我希望成為一個強大且用戶友好的工具奠定了基礎。
在開始這個專案時,我從流行的命令列密碼管理器 pass 中汲取了靈感。 pass 的簡單性和有效性引起了我的注意,我決定使用它的 API 作為在 Go 中建立我自己的密碼管理器的藍圖。
深入研究 pass 的原始碼是令人大開眼界的經驗。我很有興趣地發現這項廣泛使用的工具的全部功能都封裝在一個綜合的 Bash 腳本中。這種優雅的簡單性是我所欣賞的,並希望在我自己的專案中效仿,儘管使用了 Go 的優勢。
透過學習 pass,我對命令列密碼管理器的基本功能及其應提供的使用者體驗獲得了寶貴的見解。當我繼續開發「dost」時,我將牢記這些教訓,旨在創建一個將 pass 的簡單性與 Go 的效能和跨平台相容性優勢結合起來的工具。
這次探索不僅為要實現的功能提供了路線圖,而且增強了我對精心設計、專注的工具的力量的信念。我很高興看到這種靈感將如何影響「dost」在未來發展階段的演變。
最初的提交重點在於兩個核心功能:
密碼產生:我實作了一個基本的密碼產生器,讓使用者可以指定他們所需的密碼長度。此功能旨在創建適合各種安全要求的強隨機密碼。
剪貼簿整合:為了增強使用者體驗,我確保產生的密碼會自動複製到剪貼簿。這個雖小但至關重要的功能可以節省時間並降低轉錄錯誤的風險。
讓我們深入探討第一次迭代的一些技術面:
讓我們來看看實現的一些關鍵部分:
func generatePassword(length int) (string, error) { const ( uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" lowercaseLetters = "abcdefghijklmnopqrstuvwxyz" digits = "0123456789" specialChars = "!@#$%^&*()-_=+[]{}|;:'\",.a8093152e673feb7aba1828c43532094/?" ) allChars := uppercaseLetters + lowercaseLetters + digits + specialChars var password string for i := 0; i 2b50dcf7302ef14ec2036f5c12579f5f go build -o dost main.go"> <pre class="brush:php;toolbar:false">> go build -o dost main.go
Generating password:
> ./dost generate -c email/vema@example.com Copied to clipboard! ✅
Avoid symbols for generating passwords:
> ./dost generate -n email/vema@example.com Generated Password: E2UST}^{Ac[Fb&D|cD%;Eij>H
MIT
以上是用 Go 建構密碼管理器的詳細內容。更多資訊請關注PHP中文網其他相關文章!