首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Go中的getpasswd功能?

Go中的getpasswd功能?
EN

Stack Overflow用户
提问于 2010-01-26 11:25:09
回答 10查看 36.5K关注 0票数 62

情况:

我想从stdin控制台获得密码输入-而不是回显用户键入的内容。Go中是否有可与getpasswd功能相媲美的功能?

我尝试过的东西:

我尝试使用syscall.Read,但它会回显输入的内容。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-01-26 11:37:21

您可以通过执行stty -echo来关闭echo,然后在读取口令后执行stty echo来重新打开它

票数 7
EN

Stack Overflow用户

发布于 2015-09-25 02:31:09

下面是完成这项任务的最好方法之一。首先通过go get golang.org/x/term获取term

代码语言:javascript
复制
package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
    "syscall"

    "golang.org/x/term"
)

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

func credentials() (string, string, error) {
    reader := bufio.NewReader(os.Stdin)

    fmt.Print("Enter Username: ")
    username, err := reader.ReadString('\n')
    if err != nil {
        return "", "", err
    }

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

    password := string(bytePassword)
    return strings.TrimSpace(username), strings.TrimSpace(password), nil
}

http://play.golang.org/p/l-9IP1mrhA

票数 115
EN

Stack Overflow用户

发布于 2012-11-15 16:07:33

刚在#go-nuts上看到了一封邮件。有人写了一个非常简单的go包来使用。你可以在这里找到它:https://github.com/howeyc/gopass

大概是这样的:

代码语言:javascript
复制
package main

import "fmt"
import "github.com/howeyc/gopass"

func main() {
    fmt.Printf("Password: ")
    pass := gopass.GetPasswd()
    // Do something with pass
}
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2137357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档