Elixir 具有密钥派生函数的AES解密

Elixir 具有密钥派生函数的AES解密,elixir,Elixir,我正在将一个解密函数从.NET移植到elixir,作为概念证明 有谁能给我一些关于Erlang加密模块是否可行的指导吗?我已经使用了块_decrypt函数,但始终无法得到正确的结果。我想我的问题是因为钥匙和IV不正确 我不确定如何从加密的纯文本值派生字节数据,以传递到块\u解密 以下是我尝试解密的长生不老药代码: defmodule TestApp.Decrypt do @iv <<30,64,180,159,172,197,92,10,197,3,39,75,53,92,93,

我正在将一个解密函数从.NET移植到elixir,作为概念证明

有谁能给我一些关于Erlang加密模块是否可行的指导吗?我已经使用了
块_decrypt
函数,但始终无法得到正确的结果。我想我的问题是因为钥匙和IV不正确

我不确定如何从加密的纯文本值派生字节数据,以传递到
块\u解密

以下是我尝试解密的长生不老药代码:

defmodule TestApp.Decrypt do
  @iv <<30,64,180,159,172,197,92,10,197,3,39,75,53,92,93,37>>

  def unpad(data) do
    to_remove = :binary.last(data)
    :binary.part(data, 0, byte_size(data) - to_remove)
  end


  def decrypt(data, key) do
    IO.puts "WOrking to decrypt #{data} using #{key}"
    padded = :crypto.block_decrypt(:aes_cbc256, key, @iv, :base64.decode(data))
    unpad(padded)
  end
end

加密库指出这个错误是因为在我的erlang构建中没有启用脏调度程序,但在研究之前,我不知道我是否朝着正确的方向去做。

erlang加密错误不是很有帮助。看起来您可能指定了错误的密码。您可能需要
aes\u cbc256\u cbc
而不是
aes\u cbc256。看

您可能还想查看我正在进行的一个名为Apoc的项目,该项目将这些内容封装到一个更像“长生不老药”的API中:


到目前为止,它支持GCM模式下的AES,但我希望对其他密码有一些贡献

如果您发布用于加密的代码,对未加密和加密的文本(hextump)进行采样,以及您编写的用于解密但不起作用的代码,则会更好。我成功地为一个客户端实现了解密函数,该客户端的数据由Perl中的某个加密模块加密,因此只要您的算法是由Erlang的
加密实现的,就应该可以实现。@Dogbert,感谢您的输入。我会整理一些东西并更新我的问题。@Dogbert编辑的问题。在加密文档中,它说如果基础OpenSSL实现不支持所选类型,则
可能会抛出异常notsup。
fwiw,如果我删除
unpad
,我可以毫无例外地运行它:
Erlang error: :notsup