七牛的时间戳防盗链go语言
2017-04-11 17:42
459 查看
package main import ( "crypto/md5" "fmt" "net/url" "strings" "time" ) func main() { urls :="http://pili-live-hdl.pilihu.echohu.top/huxicongPili/588773c868d03f791b030f4e.flv?123" urltimestamps:=&urltimestamp{ urls, 0, "123", } urlsign:=urltimestamps.timestamp() fmt.Println(urlsign) fmt.Println(time.Now().Unix()) } type urltimestamp struct { urls string expecttime int64 sign_key string } func (urlInfo *urltimestamp)timestamp()string { data,err:=url.Parse(urlInfo.urls) if err !=nil{ fmt.Println("er") } path:=data.Path splitData:=strings.Split(path,".") var sign_paths string if len(splitData)!=1 { sign_path:=splitData[0] sign_paths= sign_path[1:] }else { sign_paths=splitData[0] } query:=data.RawQuery expireTime :=fmt.Sprintf("%x", time.Now().Unix()+urlInfo.expecttime) var sign_token string if query!=""{ sign_token = fmt.Sprintf("%s%s%s%s", urlInfo.sign_key, expireTime ,sign_paths,query) }else { sign_token = fmt.Sprintf("%s%s%s", urlInfo.sign_key, sign_paths, expireTime) } fmt.Println(sign_token) sing:=md5_time(sign_token) var urlget string if query!=""{ rebuildPath:=fmt.Sprintf("%s://%s%s",data.Scheme,data.Host,data.Path) urlget=fmt.Sprintf(rebuildPath+"?s=%s&ts=%s&rid=%s",sing,expireTime,query) }else{ urlget=fmt.Sprintf(urlInfo.urls+"?s=%s&ts=%s",sing,expireTime) } return urlget } func md5_time(str string) string { md5H := md5.New() md5H.Write([]byte(str)) sign := fmt.Sprintf("%x", md5H.Sum(nil)) return sign }
相关文章推荐
- go语言计算两个时间的时间差方法
- go 语言中 日期转换 日期、时间戳、字符串 的转换(这个是最终答案)
- GO语言时间格式化,奇葩得不想说了
- 在go语言中统计程序执行时间
- go语言时间操作一些坑
- Go语言 北京UTC+8 时间问题
- go语言计算两个时间的时间差
- Go语言如何计算程序运行的时间效率,获取时间差
- Go语言学习之time包(获取当前时间戳等)(the way to go)
- Go语言技巧:使用for range time.Tick()固定间隔时间执行
- 七牛时间戳防盗链生成csharp,c#实现
- go语言中时间戳格式化的方法
- Go 语言中格式化时间
- go语言里时间相加,在一个时间段里加几天
- go语言计算两个时间的时间差方法
- Go语言中的时间格式
- Go语言_时间篇
- 七牛上传小工具-Go语言版本
- Go语言时间格式化
- go语言如何将时间转化为字符串String类型