Golang中如何实现网络数据的加密和解密?代码举例讲解

在Golang中,可以使用crypto/tls包实现网络数据的加密和解密。代码示例:

服务器:

go
cert, err := tls.LoadX509KeyPair("cert.pem", "key.pem")
if err != nil {
    log.Fatal(err)
}

config := &tls.Config{Certificates: []tls.Certificate{cert}}
listener, err := tls.Listen("tcp", ":8000", config)
if err != nil {
    log.Fatal(err) 
}

for { 
    conn, err := listener.Accept()
    if err != nil {
        log.Fatal(err)
    }
    go handleConnection(conn)
}

func handleConnection(conn net.Conn) {
    // conn已经是TLS连接,数据经过加密传输  
}

服务器加载证书和私钥,然后创建TLS配置,通过tls.Listen监听TLS连接。 accepted 连接conn已经是加密的TLS连接,可以直接用于数据传输。

客户端:

go
config := &tls.Config{
    InsecureSkipVerify: true,
} 
conn, err := tls.Dial("tcp", ":8000", config)
if err != nil {
    log.Fatal(err)
}

// conn是一个TLS连接,数据经过加密传输
_, err = conn.Write([]byte("data"))
if err != nil {
    log.Fatal(err)
}

客户端使用tls.Dial建立到服务器的TLS连接conn,这个连接已经进行了加密,可以用于数据的传输。