我正在尝试生成一个随机令牌,我可以在实现重置密码功能时使用它.这个(http://play.golang.org/p/mmAzXLIZML)是令人眼花缭乱且不起作用的:(我第一次尝试的代码.它不起作用,因为它产生了反复使用相同的标记(我假设它是时间不变的函数).如何使用md5生成随机标记,每次都会更改?
package main
import "fmt"
import "strconv"
import "time"
import "crypto/md5"
import "io"
func main() {
time := strconv.FormatInt(time.Now().Unix(), 10)
fmt.Println(time)
h := md5.New()
io.WriteString(h, time)
fmt.Printf("%x", h.Sum(nil))
}
Run Code Online (Sandbox Code Playgroud)
Jim*_*imB 27
它每次生成相同的结果只是因为它在操场上,时间被冻结并且页面被缓存.
这不是一个好主意,因为可以根据请求的时间猜测重置密码.
为什么它必须是md5?这是一个随机令牌生成器:
http://play.golang.org/p/3weHBU6YZr
func randToken() string {
b := make([]byte, 8)
rand.Read(b)
return fmt.Sprintf("%x", b)
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6297 次 |
最近记录: |