gpt4 book ai didi

go - 生成具有特定公共(public)指数的 RSA key

转载 作者:IT王子 更新时间:2023-10-29 01:44:43 26 4
gpt4 key购买 nike

crypto/rsa 库具有以下生成新 RSA 私钥的函数。

func GenerateKey(random io.Reader, bits int) (*PrivateKey, error)

这似乎默认使用 65537 作为公共(public)指数值。是否有 API 可用于生成 RSA 私钥,其中包含我选择的公共(public)指数,不依赖于 OpenSSL 或其他 C 库?

最佳答案

你不会在 Go 中找到这样的 API。

这是因为,出于多种原因,3 和 65537 符合 RSA 工作和 RSA 实现速度所需的要求。

下面是对这两个属性的解释:

  • 首先,要使 RSA 起作用,公共(public)指数必须与整数集的基数互质,介于 1 和模数之间,且与模数互质(请参阅 RSA 算法以了解原因)。所以,选择一个质数是一个很好的方法,可以让这个数有机会与上述集合的基数互质,这就是为什么人们选择质数作为公共(public)指数的原因,大多数时候(如果它是事实并非如此,他们计算一个新的模数而不是改变公共(public)指数)。由于上面描述的集合的基数是偶数,所以不能选择2(如果模数是素数p和q的乘积,这个集合有(p-1)(q-1)个元素,那显然是偶数数)。

  • 此外,为了快速计算,公共(public)指数的二进制表示中设置为 1 的位数必须尽可能少。 2 是唯一在其二进制表示中一位设置为 1 的素数。由于无法选择,您将选择一个在其二进制表示中只有 2 位设置为 1 的素数。因此,这样一个质数与任何其他数的算术积只需要一次加法和逻辑左移。

唯一符合这些要求的已知整数(到目前为止)是 3、5、17、257 和 65537。

关于go - 生成具有特定公共(public)指数的 RSA key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44665958/

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