douzai8285 2014-08-21 16:47
浏览 105
已采纳

如何使用md5生成随机令牌

I'm trying to generate a random token that I can use while implementing reset password functionality. This (http://play.golang.org/p/mmAzXLIZML) is the dazzling and non-functional :( code that I came up with for a first try. It doesn't work as I'd hope because it produces the same token over and over again (which I assume is a function of the time not changing). How do I generate a random token with md5 that will change every time?

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))
}

http://play.golang.org/p/mmAzXLIZML

  • 写回答

2条回答 默认 最新

  • dongzhan7253 2014-08-21 16:54
    关注

    It generates the same result each time only because it's in the playground, where time is frozen and pages are cached.

    This isn't a great idea though, since a reset password could be guessed based on the time the request was made.

    Why does it have to be an md5? Here's a random token generator:

    http://play.golang.org/p/3weHBU6YZr

    func randToken() string {
        b := make([]byte, 8)
        rand.Read(b)
        return fmt.Sprintf("%x", b)
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。
  • ¥20 CST怎么把天线放在座椅环境中并仿真