OAEP определяется PKCS # 1, раздел 7.1 .
Для OAEP требуются следующие параметры:
- хеш-функция;
- «функция генерации маски», которую можно рассматривать как хеш-функцию с неограниченной длиной вывода;
- «метка» (произвольная последовательность байтов).
Существуеттолько одна определенная функция генерации маски, называемая MGF1, и эта функция построена поверх хеш-функции.Таким образом, ваша arg3
- это хеш-функция, которую MGF1 будет использовать.Это может быть та же самая хеш-функция, что и первой (я не уверен, что это может быть тот же самый экземпляр Digest
в API Bouncy Castle; я говорю здесь математически).Это также может быть другая хеш-функция.
Метка может использоваться как своего рода различение между экземплярами (например, вы можете зашифровать данные с явной «целью», закодированной в метке).Это удобно в некоторых математических доказательствах, но сейчас PKCS # 1 рекомендует использовать пустую строку и покончить с этим.Для целей, описанных в PKCS # 1, пустая метка так же хороша, как и любая.
Процесс дешифрования должен знать эти параметры для работы.Обычно их кодируют в структуре, которая поставляется вместе с зашифрованным сообщением и гласит «это зашифровано с помощью RSA / OAEP»;Вот как это происходит в CMS .
В случае сомнений используйте ту же хеш-функцию, что и в первом параметре для MGF1, и используйте пустую метку.