Golang实现验证码安全输入功能遇到问题求助

Golang实现验证码安全输入功能遇到问题求助 如何输入验证码来关闭终端?

package main

import "fmt"

func main() {

    fmt.Println(" input capcha to close terminal = 88985522 ")

    fmt.Scanln()
}
2 回复

Go 无法关闭它正在其中运行的终端。

至少不容易做到。

除此之外,你的具体问题是什么?是从终端读取数字?与期望值进行比较?还是确实要关闭终端?

更多关于Golang实现验证码安全输入功能遇到问题求助的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Golang中实现验证码安全输入功能,您需要处理终端输入并验证。以下是改进后的代码示例,包含验证码验证和错误处理:

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    captcha := "88985522"
    
    fmt.Printf("请输入验证码 %s 来关闭终端:\n", captcha)
    
    reader := bufio.NewReader(os.Stdin)
    input, err := reader.ReadString('\n')
    if err != nil {
        fmt.Printf("读取输入时出错: %v\n", err)
        return
    }
    
    input = strings.TrimSpace(input)
    
    if input == captcha {
        fmt.Println("验证码正确,正在关闭终端...")
        os.Exit(0)
    } else {
        fmt.Println("验证码错误,程序继续运行")
        // 可以添加重试逻辑
        fmt.Println("按回车键退出...")
        fmt.Scanln()
    }
}

如果需要隐藏验证码输入(如密码输入),可以使用以下方式:

package main

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

func main() {
    captcha := "88985522"
    
    fmt.Printf("请输入验证码来关闭终端:")
    
    bytePassword, err := term.ReadPassword(int(syscall.Stdin))
    if err != nil {
        fmt.Printf("读取输入时出错: %v\n", err)
        return
    }
    
    input := string(bytePassword)
    fmt.Println() // 换行
    
    if input == captcha {
        fmt.Println("验证码正确,正在关闭终端...")
        os.Exit(0)
    } else {
        fmt.Println("验证码错误")
        os.Exit(1)
    }
}

对于需要安装的包,运行:

go get golang.org/x/term

第一个示例提供基本的验证码验证功能,第二个示例增加了输入隐藏功能,适合需要保护验证码不被旁观者看到的场景。两个示例都包含了错误处理,确保程序的健壮性。

回到顶部