golang.org/x/crypto/bcrypt生成哈希时出现哪种错误情况

golang.org/x/crypto/bcrypt生成哈希时出现哪种错误情况,go,error-handling,bcrypt,Go,Error Handling,Bcrypt,这是使用生成哈希密码的函数 func GenerateFromPassword(密码[]字节,成本整数)([]字节,错误) GenerateFromPassword以给定的代价返回密码的bcrypt哈希。如果给定的成本小于MinCost,则该成本将改为DefaultCost。使用此包中定义的CompareHashAndPassword将返回的哈希密码与其明文版本进行比较 在这种情况下,此函数返回的错误不是成本超出范围(4,31)?奇怪的是,当低于最低成本时,他们将成本设置为默认值,但当成本高于最

这是使用生成哈希密码的函数

func GenerateFromPassword(密码[]字节,成本整数)([]字节,错误)

GenerateFromPassword以给定的代价返回密码的bcrypt哈希。如果给定的成本小于MinCost,则该成本将改为DefaultCost。使用此包中定义的CompareHashAndPassword将返回的哈希密码与其明文版本进行比较


在这种情况下,此函数返回的错误不是成本超出范围(4,31)?奇怪的是,当低于最低成本时,他们将成本设置为默认值,但当成本高于最高成本时,他们会返回一个错误,这背后有什么原因吗?

除了返回错误参数,如果函数无法从安全随机数生成器读取数据,则会返回错误。

当低于最小成本(而不是低于默认值)时,函数会将成本设置为默认值,以便在计算能力增加时可以提高最小值,而不会破坏任何人的代码。当然,我的问题是,它设置为低于最小成本的默认值。我在最后一个问题中的观点是,当超过最大成本时,为什么他们会设置错误?为什么不设置为默认值,就像低于最低成本一样。因为在最大值之上指定一个值总是程序员的错误。