(图片来自网络,有侵权,联系我删除)
当我们做命令行工具时, 遇到用户需要输入密码时, 常规处理是当字符串显示输入,这样并不是很好.应该像mysqld工具一样,输入密码时,以星号代替.对敏感数据进行脱敏处理.
今天要介绍一个golang这方面的包github.com/howeyc/gopass
代码实例使用
1. 当输入密码时,不显示任何信息
func GetPasswd() {
fmt.Printf("1.请输入密码:")
pass, err := gopass.GetPasswd()
if err != nil {
log.Fatalln(err)
return
}
fmt.Println("您输入的密码是:", string(pass))
}
2. 当输入密码时,以星号*代替你输入的字符
func GetPasswdMasked() {
fmt.Printf("2.请输入密码:")
pass, err := gopass.GetPasswdMasked()
if err != nil {
log.Fatalln(err)
return
}
fmt.Println("您输入的密码是:", string(pass))
}
3.你输入密码时,以星号*代替你输入的字符
func GetPasswdPrompt() {
pass, err := gopass.GetPasswdPrompt("3.请输入密码:", true, os.Stdin, os.Stdout)
if err != nil {
log.Fatalln(err)
return
}
fmt.Println("您输入的密码是:", string(pass))
}
效果
1.请输入密码:
您输入的密码是: www.sgfoot.com
2.请输入密码:**********
您输入的密码是: sgfoot.com
3.请输入密码:******
您输入的密码是: sgfoot