Я знаю, что при шифровании данных с openssl_public_encrypt
вы не можете зашифровать что-либо большее, чем размер вашего ключа. Это подтверждается также и в PHP документации заметок другими людьми:Как получить максимальное количество бит, которое вы можете зашифровать с помощью openssl_public_encrypt?
http://php.net/manual/en/function.openssl-public-encrypt.php#55901
Теперь я хочу, чтобы бросить исключение, когда кто-то еще пытается сделать это, и я выяснить размер моего ключа, как так:
$keyDetails = openssl_pkey_get_details($this->public);
$bytes = $keyDetails['bits']/8;
Это дает мне полные биты, которые у меня есть, но это не учитывает прокладку. Я хочу, чтобы это исключение было динамически изменено, поэтому я хочу использовать открытые ключи разных размеров.
Из PHP документации кто-то уже было отмечен:
Однако стандарт PKCS # 1, который использует OpenSSL, определяет схему обивки (так что вы можете шифровать меньшие количества без потери безопасности), и этой схему обивки занимает не менее 11 байтов (это будет больше, если значение, которое вы шифруете, меньше).
Итак, с помощью стандарта PKCS # 1 я теряю 11 * 8 бит, что означает, что я могу только зашифровать что-то с максимальным размером 936 бит с ключом 1024 бит.
За исключением случаев, когда я не использую этот стандарт. Я использую OPENSSL_PKCS1_OAEP_PADDING
. Я не знаю, откуда пришли 11 байтов, я не могу найти его в PHP-коде, где эти константы определены.
Как я могу узнать прописку для моего стандарта и, следовательно, максимальный размер, который я могу зашифровать.
Несмотря на то, что заполнение может меняться в зависимости от размера значения «быть зашифрованным», я хотел бы установить жесткий нижний предел в этом случае (не совсем уверен, если это так).
Cheers.
Нашел его после прочтения некоторых статей. Спасибо за ответ, я сохраню это для будущей ссылки! Приветствия. –
Но только если SHA-1 используется как хэш-функция. Накладные расходы составляют 66 байт для SHA-256 и 130 байтов для SHA-512 или, другими словами: два раза хэш-длина плюс два. Например, phpseclib имеет возможность выбора хэш-функции. –
@ArtjomB. Спасибо, это хорошо знать. –