在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,这个连接已经进行了加密,可以用于数据的传输。