2018年2月27日 星期二

Golang 計算 Websocket Accept 的範例

package main

import (
	"crypto/sha1"
	"encoding/base64"
	"fmt"
)

const GUID = `258EAFA5-E914-47DA-95CA-C5AB0DC85B11`

func main() {
	// 值取自維基百科的範例
	// 如果運作正常,會得到 "fFBooB7FAkLlXgRSz0BT3v4hq5s="
	fmt.Println(GetWebSocketAccept(`sN9cRrP/n9NdMgdcy2VJFQ==`))
}

func GetWebSocketAccept(key string) string {
	// 計算SHA-1摘要
	sha1Result := sha1.Sum([]byte(key + GUID))

	// 進行BASE-64
	// 由於 sha1.Sum回傳的值是 [Size]byte,但 EncodeToString 要求的參數是 []byte,所以使用 sha1Result[0:] 變更類型
	result := base64.StdEncoding.EncodeToString(sha1Result[0:])
	return string(result)
}

沒有留言:

張貼留言