如何使用 criptonite 库以这种特殊方式使用 RSA 解密 ByteString?
How to decrypt a ByteString using RSA this particular way, with the criptonite library?
我继承了 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
参数传递给函数?
根据openssl manpage,rsa_pkcs1_oaep_padding
是
EME-OAEP as defined in PKCS #1 v2.0 with
SHA-1, MGF1 and an empty encoding
parameter
您应该使用 Crypto.PubKey.RSA.OAEP
模块中的 decrypt
,并使用 defaultOAEPParams
和 SHA1
作为散列:
import qualified Crypto.PubKey.RSA.OAEP as RSA
import Crypto.Hash.Algorithms ( SHA1 )
...
res <- RSA.decrypt None (RSA.defaultOAEPParams SHA1) privateKey myBinData
我继承了 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
参数传递给函数?
根据openssl manpage,rsa_pkcs1_oaep_padding
是
EME-OAEP as defined in PKCS #1 v2.0 with SHA-1, MGF1 and an empty encoding parameter
您应该使用 Crypto.PubKey.RSA.OAEP
模块中的 decrypt
,并使用 defaultOAEPParams
和 SHA1
作为散列:
import qualified Crypto.PubKey.RSA.OAEP as RSA
import Crypto.Hash.Algorithms ( SHA1 )
...
res <- RSA.decrypt None (RSA.defaultOAEPParams SHA1) privateKey myBinData