哈希竞猜游戏开发(原生开发)丨哈希竞猜游戏开发说明

如何使用哈希值来保护数据?

哈希值大大提高了数据的安全性。正如我已经提到的,它是一个单向的加密函数。一个加密哈希函数需要具备以下几个关键的特性才能被认为是有用的:

1.每个哈希值都是不同的。

2.对于相同的消息,总是生成相同的哈希值。

3.不可能根据哈希值来决定输入。

4.即使对输入的整个哈希值做一个小的更改也会被更改。

哈希值帮助我们查看数据是否被篡改。

例如,您下载了一段重要的信息,要查看数据是否改变,可以通过哈希值算法运行数据,比较数据的哈希值和接收数据的哈希值。

如果两个哈希值都是相同的,则不更改数据,如果哈希值不匹配,则在接收数据之前更改数据。

算法验证

启动代理服务器

启动代理服务器的代码如下:

package main

import (

"fmt"

"github.com/jasonkayzk/consistent-hashing-demo/core"

"github.com/jasonkayzk/consistent-hashing-demo/proxy"

"net/http"

)

var (

port = "18888"

p = proxy.NewProxy(core.NewConsistent(10, nil))

)

func main() {

stopChan := make(chan interface{})

startServer(port)

<-stopChan

}

func startServer(port string) {

http.HandleFunc("/register", registerHost)

http.HandleFunc("/unregister", unregisterHost)

http.HandleFunc("/key", getKey)

fmt.Printf("start proxy server: %sn", port)

err := http.ListenAndServe(":"+port, nil)

if err != nil {

panic(err)

}

}

func registerHost(w http.ResponseWriter, r *http.Request) {

_ = r.ParseForm()

err := p.RegisterHost(r.Form["host"][0])

if err != nil {

w.WriteHeader(http.StatusInternalServerError)

_, _ = fmt.Fprintf(w, err.Error())

return

}

_, _ = fmt.Fprintf(w, fmt.Sprintf("register host: %s success", r.Form["host"][0]))

}

func unregisterHost(w http.ResponseWriter, r *http.Request) {

_ = r.ParseForm()

err := p.UnregisterHost(r.Form["host"][0])

if err != nil {

w.WriteHeader(http.StatusInternalServerError)

_, _ = fmt.Fprintf(w, err.Error())

return

}

_, _ = fmt.Fprintf(w, fmt.Sprintf("unregister host: %s success", r.Form["host"][0]))

}

func getKey(w http.ResponseWriter, r *http.Request) {

_ = r.ParseForm()

val, err := p.GetKey(r.Form["key"][0])

if err != nil {

w.WriteHeader(http.StatusInternalServerError)

_, _ = fmt.Fprintf(w, err.Error())

return

}

_, _ = fmt.Fprintf(w, fmt.Sprintf("key: %s, val: %s", r.Form["key"][0], val))

}

和缓存服务器类似,这里采用 HTTP 服务器来模拟;

代理服务器监听 18888 端口的几个路由:

/register:注册缓存服务器;

/unregister:注销缓存服务器;

/key:查询缓存 Key;

这里为了简单起见,使用了这种方式进行服务注册,实际使用时请使用其他组件进行实现!

接下来启动缓存服务器:

start proxy server: 18888

启动缓存服务器

分别启动三个缓存服务器:

$ go run server/main.go -p 8080

start server: 8080

$ go run server/main.go -p 8081

start server: 8081

$ go run server/main.go -p 8082

start server: 8082

同时,代理服务器输出:

register host: localhost:8080 success

register host: localhost:8081 success

register host: localhost:8082 success

可以看到缓存服务器已经成功注册;

请求代理服务器获取 Key

可以使用 curl 命令请求代理服务器获取缓存 key:

$ curl localhost:18888/key?key=123

key: 123, val: hello: 123

此时,代理服务器输出:

Response from host localhost:8080: hello: 123

同时,8000 端口的缓存服务器输出:

cached key: {123: hello: 123}

removed cached key after 10s: {123: hello: 123}

可以看到,8000 端口的服务器对 key 值进行了缓存,并在 10 秒后清除了缓存;

尝试多次获取 Key

尝试获取多个 Key:

Response from host localhost:8082: hello: 45363456

Response from host localhost:8080: hello: 4

Response from host localhost:8082: hello: 1

Response from host localhost:8080: hello: 2

Response from host localhost:8082: hello: 3

Response from host localhost:8080: hello: 4

Response from host localhost:8082: hello: 5

Response from host localhost:8080: hello: 6

Response from host localhost:8082: hello: sdkbnfoerwtnbre

Response from host localhost:8082: hello: sd45555254tg423i5gvj4v5

Response from host localhost:8081: hello: 0

相关知识

哈希竞猜游戏开发(原生开发)丨哈希竞猜游戏开发说明
区块链如何改变游戏规则?X.Game哈希值竞猜深度解析
android 原生 游戏开发
链游戏再添新使命,解析区块链游戏结合哈希单双算法的精妙
波场TRX结合区块链游戏新格局做幸运哈希行业领航者
原生APP开发,原生应用开发
全方位解析哈希Web3游戏如何利用区块链技术改变游戏体验
什么事原生开发
原生APP开发啥意思
云原生游戏与Kubernetes:未来游戏开发的基石

网址: 哈希竞猜游戏开发(原生开发)丨哈希竞猜游戏开发说明 http://www.hyxgl.com.xishuta.cn/newsview387600.html

推荐资讯