ホームページ >バックエンド開発 >Golang >Go でエコーしないパスワード入力を実装するにはどうすればよいですか?

Go でエコーしないパスワード入力を実装するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-29 17:03:10764ブラウズ

How to Implement Non-Echoing Password Entry in Go?

Go での非エコーパスワード入力

状況:

入力された文字を表示せずにユーザーからパスワードを取得していますは一般的な要件です。 Go ではどのようにしてこれを実現できますか?

解決策:

Go は getpasswd 機能を直接提供しません。ただし、次のアプローチでタスクを効果的に達成できます。

実装の詳細

  1. エコーを無効にする: 文字エコーを抑制するために、用語パッケージがインポートされます。 term.ReadPassword は、ユーザー入力を隠しながらパスワードを読み取るために使用されます。
  2. Get Username: スクリプトは、fmt.Print を使用してユーザーにユーザー名の入力を求めます。 bufio.NewReader は、ユーザー名の読み取りに使用されます。
  3. Get Password: term.ReadPassword は、ユーザーにパスワードの入力を求めた後にパスワードを取得するために使用されます。ユーザーが入力したパスワードは、コンソールには表示されません。
  4. 空白のトリミング: 取得されたユーザー名とパスワードは、先頭または末尾の空白を削除するためにトリミングされます。

例:

package main

import (
    "bufio"
    "fmt"
    "golang.org/x/term"
    "os"
    "strings"
)

func main() {
    u, p, _ := credentials()
    fmt.Printf("Username: %s, Password: %s\n", u, p)
}

func credentials() (string, string, error) {
    fmt.Print("Enter Username: ")
    r := bufio.NewReader(os.Stdin)
    u, err := r.ReadString('\n')
    if err != nil {
        return "", "", err
    }

    fmt.Print("Enter Password: ")
    bp, err := term.ReadPassword(int(syscall.Stdin))
    if err != nil {
        return "", "", err
    }

    p := string(bp)
    return strings.TrimSpace(u), strings.TrimSpace(p), nil
}

このコード スニペットは、ユーザーからユーザー名とパスワードを取得するプロセスを示しています。パスワード文字を表示します。

以上がGo でエコーしないパスワード入力を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。