(图片来自网络,有侵权,联系我删除)

(图片来自网络,有侵权,联系我删除)

当我们做命令行工具时, 遇到用户需要输入密码时, 常规处理是当字符串显示输入,这样并不是很好.应该像mysqld工具一样,输入密码时,以星号代替.对敏感数据进行脱敏处理.

今天要介绍一个golang这方面的包github.com/howeyc/gopass

代码实例使用

1. 当输入密码时,不显示任何信息

1
2
3
4
5
6
7
8
9
func GetPasswd() {
	fmt.Printf("1.请输入密码:")
	pass, err := gopass.GetPasswd()
	if err != nil {
		log.Fatalln(err)
		return
	}
	fmt.Println("您输入的密码是:", string(pass))
}

2. 当输入密码时,以星号*代替你输入的字符

1
2
3
4
5
6
7
8
9
func GetPasswdMasked() {
	fmt.Printf("2.请输入密码:")
	pass, err := gopass.GetPasswdMasked()
	if err != nil {
		log.Fatalln(err)
		return
	}
	fmt.Println("您输入的密码是:", string(pass))
}

3.你输入密码时,以星号*代替你输入的字符

1
2
3
4
5
6
7
8
func GetPasswdPrompt() {
	pass, err := gopass.GetPasswdPrompt("3.请输入密码:", true, os.Stdin, os.Stdout)
	if err != nil {
		log.Fatalln(err)
		return
	}
	fmt.Println("您输入的密码是:", string(pass))
}

效果

1
2
3
4
5
6
1.请输入密码:
您输入的密码是: www.sgfoot.com
2.请输入密码:**********
您输入的密码是: sgfoot.com
3.请输入密码:******
您输入的密码是: sgfoot