gpt4 book ai didi

database - RSA 私钥和公钥的最大长度是多少?

转载 作者:太空狗 更新时间:2023-10-30 01:54:31 26 4
gpt4 key购买 nike

我在 PHP 中使用 OpenSSL 生成私钥和公钥,我打算将其存储在数据库中(尽管您可能不需要了解 PHP 来回答这个问题)。

它们看起来像这样:

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIi4rlLSKA9/8CAggA
...
-----END ENCRYPTED PRIVATE KEY-----

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8YvAFZHSGNITeDNdXFbc
...
-----END PUBLIC KEY-----

(是的,这些只是示例)

它们是这样创建的:

$resource = openssl_pkey_new([
'private_key_bits' => '2048',
"private_key_type" => OPENSSL_KEYTYPE_RSA,
]);
openssl_pkey_export($resource, $privateKey, $passPhrase) === false
$opensslDetails = openssl_pkey_get_details($resource);
$publicKey = $opensslDetails['key'];

我想知道这些私钥和公钥的最大长度是多少。

根据我的实验,我发现:

  • 1704 个字符的私钥
  • 1834 个字符的私钥和密码
  • 451 个公钥字符

但是我还没有找到任何关于这方面的正式文件来证明是这种情况,所以我不能确定。

最佳答案

What is the maximum length of private and public RSA keys?

理论上没有限制。实际上,有一个限制。此外,限制通常强加于模数大小 (n = p*q),而不是公钥或私钥本身。您可能面临来自网络服务器或数据库的额外限制。

对于 OpenSSL 和 RSA,您的 RSA key 在生成时限制为 16K。在 key 交换期间使用的 OpenSSL 的 s_client 实用程序也施加了限制。 key 交换期间的限制是 2K,这对我来说似乎人为地低了。您可以通过避免在 key 协议(protocol)期间使用 key 传输方案(即使用 DH 或 EDH 而不是 RSA)来避开 s_client 限制。

如果您开始达到极限,那么它通常表示是时候切换到椭圆曲线了。 16K RSA 和 521 位 EC 提供大约 512 位的安全性。

另见 Openssl software failure for RSA 16K modulus在 OpenSSL 用户邮件列表上。


这里有一些关于使用 Crypto++ library 的 RSA key 生成时间的事实从小(256 位)到大(60K 位)。我相信这些数字是大约 5 年前在 Core2 Duo 机器上收集的。 OpenSSL 应该具有渐近相似的运行时间。

cryptopp$ rsa_kgen.exe 61440
Elapsed time for 61140 RSA key: 25654.01s (7 hours, 7 minutes, 34 seconds)
cryptopp$ rsa_kgen.exe 30720
Elapsed time for 30720 RSA key: 2255.30s (37 minutes, 35 seconds)
cryptopp$ rsa_kgen.exe 15360
Elapsed time for 15360 RSA key: 285.05s (4 minutes, 45 seconds)
cryptopp$ rsa_kgen.exe 11776
Elapsed time for 11776 RSA key: 142.52s (2 minutes, 22 seconds)
cryptopp$ rsa_kgen.exe 8192
Elapsed time for 8192 RSA key: 43.08s (43 seconds)
cryptopp$ rsa_kgen.exe 4096
Elapsed time for 4096 RSA key: 0.70s
cryptopp$ rsa_kgen.exe 2048
Elapsed time for 2048 RSA key: 0.09s
cryptopp$ rsa_kgen.exe 1024
Elapsed time for 1024 RSA key: 0.01s
cryptopp$ rsa_kgen.exe 512
Elapsed time for 512 RSA key: 0.00s
cryptopp$ rsa_kgen.exe 256
Elapsed time for 256 RSA key: 0.00s

关于database - RSA 私钥和公钥的最大长度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39068473/

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