「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go でパスワード マネージャーを構築する

Go でパスワード マネージャーを構築する

2024 年 11 月 8 日に公開
ブラウズ:929

ソフトウェア開発者として、私は常にセキュリティとユーザビリティの交差点に魅了されてきました。最近、私は Go を使用してコマンドライン パスワード マネージャーを作成するというエキサイティングなプロジェクトに着手することにしました。最初のコミットから、この旅の始まりを皆さんと共有したいと思います。

創世記

2023 年 11 月 27 日に、私は自分のプロジェクトに最初のコミットを行いました。このプロジェクトに「dost」(パスワード管理の役に立つ仲間としての役割を反映したヒンディー語の友人) と名付けました。この最初のステップは小さいものですが、堅牢でユーザーフレンドリーなツールになることを期待しているものの基礎を築きます。

インスピレーションとビジョン

Building a Password Manager in Go

このプロジェクトに着手する際、私は人気のあるコマンドライン パスワード マネージャー パスからインスピレーションを得ました。 pass のシンプルさと有効性に私の注意を引き、Go で独自のパスワード マネージャーを構築するための青写真としてその API を使用することにしました。

パスのソースコードに飛び込むのは、目を見張るような経験でした。私は、この広く使用されているツールの機能全体が 1 つの包括的な Bash スクリプトにカプセル化されていることを発見して興味をそそられました。このエレガントなシンプルさは私が賞賛しており、Go の長所を利用しながらも、自分のプロジェクトで真似したいと考えています。

パスを勉強することで、コマンドライン パスワード マネージャーの重要な機能と、それが提供すべきユーザー エクスペリエンスについて貴重な洞察を得ることができました。 「dost」の開発を続ける際には、これらの教訓を念頭に置き、パスのシンプルさと、Go のパフォーマンスおよびクロスプラットフォーム互換性の利点を組み合わせたツールの作成を目指します。

この調査は、実装する機能のロードマップを提供しただけでなく、よく作られた焦点を絞ったツールの力に対する私の信念を強化しました。このインスピレーションが今後の開発段階で「dost」の進化をどのように形作るのか楽しみです。

最初の機能

最初のコミットは 2 つのコア機能に焦点を当てました:

  1. パスワード生成: ユーザーが希望するパスワードの長さを指定できる基本的なパスワード生成機能を実装しました。この機能は、さまざまなセキュリティ要件に合わせた強力なランダム化されたパスワードを作成することを目的としています。

  2. クリップボードの統合: ユーザー エクスペリエンスを向上させるために、生成されたパスワードがクリップボードに自動的にコピーされるようにしました。この小さいながらも重要な機能により、時間が節約され、転記エラーのリスクが軽減されます。

技術的な洞察

この最初のイテレーションの技術的側面のいくつかを詳しく見てみましょう:

  • Go バージョン: プロジェクトは Go 1.21.0 を使用して構築され、言語のシンプルさと効率性を活用しています。
  • 外部依存関係: さまざまなオペレーティング システム間でクリップボード操作をシームレスに処理するために、github.com/atotto/clipboard パッケージを使用しています。
  • ランダム生成: パスワード生成では、Go の crypto/rand パッケージを利用して安全な乱数を生成します。これは、予測不可能で強力なパスワードを作成するために重要です。
  • 文字セット: パスワード ジェネレーターには、複雑さを確保するために大文字と小文字、数字、およびさまざまな特殊文字が含まれています。

コードのスニペット

実装の重要な部分をいくつか見てみましょう:

  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")
}

メイン関数はすべてを結び付けます。 Go のフラグ パッケージを使用して、ユーザーがパスワードの長さを指定し、パスワードを生成してクリップボードにコピーできるようにします。

コマンドラインインターフェース

メイン関数でわかるように、Go の flag パッケージを使用して簡単な CLI を実装しました。ユーザーは、-length フラグを使用して希望のパスワードの長さを指定できます。指定しない場合、デフォルトは 12 文字です。

将来に向けて

この最初のコミットは始まりにすぎません。このパスワード マネージャーの開発を続ける中で、次のような機能を追加する予定です。

  • パスワードを安全に保管
  • 保存データの暗号化
  • 検索および取得機能
  • パスワード強度分析

今後の旅とそれがもたらす挑戦に興奮しています。パスワード マネージャーの構築はコーディングだけではありません。それは、セキュリティ原則、ユーザーのニーズを理解し、機密情報を信頼して扱うことができるツールを作成することです。

このプロジェクトの進展に合わせてさらなる最新情報をお知らせしますので、ご期待ください。その過程での私の進歩、課題、学びを共有していきます。フォローしたり貢献したりすることに興味がある場合は、お気軽に GitHub でプロジェクトをチェックしてください。

Building a Password Manager in Go スベマラジュ / ドスト

Go で書かれた dost コマンド ライン パスワード マネージャー

ドスト

dost は Go で書かれた CLI パスワード マネージャーです。

(パス)[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 キーベースの暗号化

ライセンス

ミット




GitHub で表示


リリースステートメント この記事は次の場所に転載されています: https://dev.to/svemaraju/building-a-password-manager-in-go-31jo?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3