我在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手册页,rsa_pkcs1_oaep_padding
是
在PKCS#1 v2.0中定义的EME-OAEPSHA-1、MGF1和空编码参数
您应该使用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