首页 > 后端开发 > Golang > Go中如何实现非回显密码输入?

Go中如何实现非回显密码输入?

Linda Hamilton
发布: 2024-12-29 17:03:10
原创
757 人浏览过

How to Implement Non-Echoing Password Entry in Go?

Go 中的非回显密码输入

情况:

从用户处检索密码而不显示输入的字符是一个常见的要求。在 Go 中如何实现这一点?

解决方案:

Go 不直接提供 getpasswd 功能。然而,以下方法有效地完成了任务:

实现细节

  1. 禁用回显:为了抑制字符回显,导入术语包。 term.ReadPassword 用于在隐藏用户输入的同时读取密码。
  2. 获取用户名: 该脚本使用 fmt.Print 提示用户输入用户名。 bufio.NewReader 用于读取用户名。
  3. 获取密码: 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板