Параметр fOAEP в шифровании RSA
RSACryptoServiceProvider.Encrypt()
имеет два параметра: rgb (данные для шифрования) и fOAEP. fOAEP - это логическое значение, которое определяет, какой тип заполнения следует использовать:
fOAEP
Type: System.Boolean
true to perform direct RSA encryption using OAEP padding (only available on a computer running Microsoft Windows XP or later); otherwise, false to use PKCS#1 v1.5 padding.
В нем говорится, что true
будет работать только в Windows XP или более поздней версии, но я предполагаю, что это не обязательно включает Linux и другие языки. Тем не менее, это действительно должно работать в Linux и с PHP. Учитывая, что моими двумя главными приоритетами являются безопасность и совместимость со скриптом PHP, должно ли это значение быть истинно или ложно?
2 answers
Все это очень хорошо документировано и соответствует стандартам на.На стороне СЕТИ, я предполагаю, что на стороне PHP должно быть то же самое. Посмотрите на это, например:
Http://www.php.net/manual/en/function.openssl-public-encrypt.php
Он поддерживает как OAEP, так и PKCS#1. Так что тебе должно быть хорошо с любым из них. Мое личное мнение таково, что это не какая-то экзотическая штука, как старая.Формат DOC, где совместимость - это кошмар. Сам RSA довольно прост, заполнение просто добавляя несколько двоичных байтов, за этим стоит много мыслей, но это очень просто.
О том, что более безопасно, смотрите здесь:
Или попытайтесь найти другие криптографические исследования. Не верьте тому, что я говорю:).
РЕДАКТИРОВАТЬ: упс, расшифровка, похоже, не поддерживает OAEP, еще одна вещь, которую нужно добавить phpwtf.org ...
Http://www.php.net/manual/en/function.openssl-public-decrypt.php
Для шифрования следует использовать OAEP, он поддерживается почти всеми библиотеками. В PHP вы должны использовать openssl_public_encrypt() для шифрования и openssl_private_decrypt() для расшифровки. Они оба поддерживают заполнение OAEP.