gpt4 book ai didi

go - 使用 "crypto/rand"生成随机字符串直到成功是个好主意吗?

转载 作者:数据小太阳 更新时间:2023-10-29 03:43:24 26 4
gpt4 key购买 nike

在进程成功之前生成一个安全的随机十六进制字符串是个好主意吗?

我遇到的所有示例都表明,如果 rand.Read 返回错误,我们应该 panic ,os.Exit(1) 或返回空字符串和错误。

我需要我的程序在出现此类错误时继续运行,并等待生成随机字符串。循环直到生成字符串是个好主意,这有什么陷阱吗?

import "crypto/rand"

func RandomHex() string {
var buf [16]byte
for {
_, err := rand.Read(buf[:])
if err == nil {
break
}
}
return hex.EncodeToString(buf[:])
}

最佳答案

没有。它可能总是在某些上下文中返回错误。

示例:playground: don't use /dev/urandom in crypto/rand

假设一台机器没有 crypto/rand 从中获取数据的来源,或者程序在无法访问该来源的上下文中运行。在这种情况下,您可能会考虑让程序以有意义的方式返回该错误,而不是自旋。

更明确地说,如果您认真使用crypto/rand,那么请考虑编写RandomHex,以便调用者非常清楚它是为了安全上下文(可能重命名它)并从 RandomHex 返回错误。调用函数需要处理该错误并让用户知道出了点问题。例如,在 rest api 中,我希望该错误出现在请求处理程序中,失败并在此时返回 500,并记录一个高严重性错误。

关于go - 使用 "crypto/rand"生成随机字符串直到成功是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52862594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com