Я генерирую частные и открытые ключи, используя OpenSSL в PHP, который я намерен хранить в базе данных (хотя вам, вероятно, не нужно знать PHP, чтобы ответить на этот вопрос).Какова максимальная длина открытых и открытых ключей RSA?
Они выглядят так:
-----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 символов для открытых ключей
Однако я не нашли никакой официальной документации по этому поводу, чтобы доказать, что это так, поэтому я не могу быть уверен.
2 раза размер ключа для открытого ключа и 8-кратный размер ключа для закрытого ключа являются хорошими верхними границами. Если вам действительно нужно, то это более точно, тогда вам нужно изучить, какие элементы находятся в ключе и как они сериализованы.Его можно точно рассчитать, но действительный ключ имеет много форм, и не все элементы закрытого ключа являются обязательными. Этот вопрос, вероятно, слишком широк, потому что существует много действительных ключей, которые имеют разные размеры. –
Верхняя граница более чем достаточна. Мне просто нужен верхний для базы данных. –
@ArtjomB. Также, на что вы основываете эти цифры. Мой размер ключа - 2048 бит, и мой верхний 2048 для частных и 1024 для публики? –