Как расшифровать ByteString, используя RSA таким конкретным способом, с помощью библиотеки криптонита? - PullRequest
0 голосов
/ 17 марта 2020

У меня есть некоторый код в Elixir / Erlang, который я встроил:

  res = :crypto.private_decrypt(:rsa, my_bin_data, rsa_priv_key, [{:rsa_padding, :rsa_pkcs1_oaep_padding}])

Я хочу преобразовать его в Haskell. Я использую библиотеку cryptonite и ее модуль RSA. Мой вопрос касается параметров, которые должны быть переданы ему, чтобы он делал то же самое, что и код Elixir.

import qualified Crypto.PubKey.RSA.PKCS15 as RSA
-- [.........]

res <- RSA.decrypt None privateKey myBinData

Что я должен передать как :rsa_padding и :rsa_pkcs1_oaep_padding параметры в функция

1 Ответ

0 голосов
/ 22 марта 2020

Согласно man-странице openssl , rsa_pkcs1_oaep_padding равно

EME-OAEP, как определено в PKCS # 1 v2.0 с SHA-1, MGF1 и пустой кодировкой параметр

Вы должны использовать decrypt из модуля Crypto.PubKey.RSA.OAEP и использовать defaultOAEPParams с SHA1 в качестве ха sh:

import qualified Crypto.PubKey.RSA.OAEP as RSA
import Crypto.Hash.Algorithms ( SHA1 )

...

res <- RSA.decrypt None (RSA.defaultOAEPParams SHA1) privateKey myBinData
...